Hướng dẫn cách chuyển datetime sang string trong python. Bạn sẽ học được cách chuyển thông tin thời gian chứa trong datetime sang kiểu string bằng phương thức strftime() trong Python, và lựa chọn hiển thị thông tin thời gian đó dưới nhiều định dạng khác nhau. Bạn cũng sẽ học được cách hiển thị thông tin thời gian đó phù hợp với múi giờ lựa chọn thông qua hàm locale.setlocale(() trong python sau bài học này.
Chúng ta có thể chuyển datetime sang string trong python và hiển thị thời gian đó dưới dạng string trong Python với nhiều kiểu khác nhau, ví dụ như là:
- 2021-05-04 12:29:11
- 2021/05/04
- Wednesday, May 04, 2021
Chúng ta cũng có thể tính ra được ngày chỉ định là ngày thứ bao nhiêu trong năm, tuần trong năm. Chúng ta cũng có thể chuyển kiểu hiển thị ngày từ tiếng Anh sang tiếng Việt dựa theo múi giờ chỉ định, ví dụ như là ‘Thứ 5 ngày 4 tháng 5 năm 2021’ chẳng hạn.
Tất cả những điều đó đều có thể được giải quyết một cách đơn giản thông qua cách chuyển datetime sang string trong python bằng phương thức strftime() trong Python.
Lại nữa, nếu bạn muốn làm ngược lại, hãy xem bài viết: Chuyển string sang datetime trong python.
Chuyển datetime sang string trong python
Cú pháp chuyển datetime sang string trong python
Để chuyển datetime sang string trong python, chúng ta dùng phương thức strftime() trong python với cú pháp sau đây:
datetime
.strftime
(format
)
Trong đó:
- datetime là một instance datetime của class datetime chứa thông tin thời gian.
- strftime là tên phương thức.
- format là định dạng đầu ra của chuỗi tring.
Bảng định dạng ngày tháng năm trong chuỗi python
Định dạng đầu ra của chuỗi string được chỉ định bằng bảng định dạng ngày tháng năm trong chuỗi python dưới đây:
Format | Ý nghĩa |
---|---|
%y | Năm có hai chữ số 00, 01, …, 99 |
%Y | Tháng có 4 chữ số 0001, 0002, …, 9999 |
%b | Viết tắt tên tháng Jan, Feb, …, Dec ※1 |
%B | Tên tháng January, February, …, December ※1 |
%m | Tháng 01, 02, …, 12 |
%d | Ngày 01, 02, …, 31 |
%H | Giờ(24 giờ) 00, 01, …, 23 |
%I | Giờ(12 giờ) 00, 01, …, 11 |
%p | AM or PM ※1 |
%M | Phút 00, 01, …, 59 |
%S | Giây 00, 01, …, 59 |
%f | Micro giây 000000, 000001, …, 999999 |
%z | Time zone, +0000, -0400 etc |
%Z | Time zone UTC, EST |
%a | Viết tắt của thứ Sun, Mon, …, Sat ※1 |
%A | Thứ trong tuần Sunday, Monday, …, Saturday ※1 |
%c | Hiển thị ngày giờ một cách thích hợp ※1 |
%x | Hiển thị ngày tháng một cách thích hợp ※1 |
%X | Hiển thị thời gian một cách thích hợp ※1 |
※1: Giá trị sẽ thay đổi thích hợp tùy theo locale đã đặt. Về cách chỉ định locale hãy xem ở phần dưới.
Sau đây chúng ta hãy cùng xem các ví dụ cụ thể về cách chuyển datetime sang string trong python như sau:
Chuyển thời gian chỉ định bất kỳ sang string trong python
Ví dụ chúng ta có một thông tin thời gian như sau : '2020/07/22 20:4:38'
.
Chúng ta sẽ sử dụng hàm tạo datetime.datetime() để tạo ra một instance datetime chứa thông tin thời gian ở trên như sau:
import datetime |
Sau khi đã tạo ra datetime mydt
ở trên, chúng ta sẽ sử dụng phương thức strftime() trong python để chuyển datetime này sang string trong python như sau:
dt_str = mydt.strftime("%Y/%m/%d %a %H:%M:%S") |
Chúng ta cũng có thể thay đổi format của string và chuyển datetime sang string trong python với nhiều kết quả như sau:
print(mydt.strftime('%Y-%m-%d %H:%M:%S')) |
Lại nữa, chúng ta cũng có thể tính số thứ tự của ngày trong năm, tuần trong năm của ngày chỉ định bằng cách thay đổi format của chuỗi string khi sử dụng phương thức strftime() trong python như sau:
#Tính số thứ tự của ngày trong năm |
Chuyển thời gian hiện tại sang string trong python
Để lấy datetime của thời gian hiện tại trong Python, chúng ta sẽ sử dụng tới hàm datetime.now(). Trong trường hợp muốn lấy cả thông tin vè location, ví như như là bạn muốn lấy thời gian hiện tại của Hà Nội, có múi giờ thứ 7 chẳng hạn, chúng ta viết:
import datetime |
Sau khi tạo ra instance datetime dt_now
chứa thông tin thời gian hiện tại ở trên, chúng ta sẽ sử dụng phương thức strftime() trong python để chuyển datetime này sang string trong python như sau:
dt_str = dt_now.strftime("%Y/%m/%d %a %H:%M:%S") |
Chúng ta cũng có thể thay đổi format của string và chuyển datetime sang string trong python với nhiều kết quả như sau:
print(dt_now.strftime('%Y-%m-%d %H:%M:%S')) |
Lại nữa, chúng ta cũng có thể tính số thứ tự của ngày trong năm, tuần trong năm của ngày hiện tại bằng cách thay đổi format của chuỗi string khi sử dụng phương thức strftime() trong python như sau:
#Tính số thứ tự của ngày trong năm |
Lưu ý, ngoài module dateime ra, phương thức strftime còn được tích hợp sẵn trong các module time hoặc date.
Chỉ định locale trong datetime python
Ở bảng format ở trên, chúng ta đã biết các giá trị ngày tháng ở những cột có dấu ※1
sẽ thay đổi tùy thuộc vào locale (địa điểm) được chỉ định. Ví dụ nếu bạn chỉ định locale tại Việt Nam thì giá trị Monday
sẽ chuyển thành Thứ hai
, còn nếu chỉ định locale tại Nhật thì giá trị sẽ chuyển thành 月曜日
chẳng hạn.
Để chỉ định locale trong datetime python, chúng ta viết như sau:
import locale
locale.setlocale(locale.LC_ALL, ‘giá trị locale
‘)
Trong đó giá trị locale
sẽ quyết định locale được chỉ định.
Ví dụ chúng ta chỉ định locale tại Nhật như sau:
import locale |
Hoặc tại Việt Nam:
import locale |
Hãy xem một ví dụ hiển thị thời gian hiện tại với chỉ định locale tại Việt Nam với múi giờ thứ 7 như sau:
import datetime |
Một ví dụ khác hiển thị thời gian hiện tại khi chỉ định locale tại Nhật Bản với múi giờ thứ 9:
import datetime |
Lưu ý là chúng ta cần chạy các dòng code trên ở phần mềm python hoặc Anaconda đã được cài trên máy, do module này cần lấy thông tin bạn đã thiết đặt trong đồng hồ ở hệ điều hành. Nếu chúng ta chạy code trên tại các nền tảng Online như Paiza.io chẳng hạn thì lỗi sẽ xảy ra.
Tổng kết và thực hành
Trên đây Kiyoshi đã hướng dẫn bạn về cách chuyển datetime sang string trong pythonrồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Trong trường hợp bạn muốn chuyển ngược lại giữa string và dattime, hãy tham khảo bài viết chuyển string sang datetime trong python nhé.
URL Link
HOME › python cơ bản - lập trình python cho người mới bắt đầu>>15. datetime trong python