Chuyển datetime sang string trong python | Laptrinhcanban.com

Chuyển datetime sang string trong python

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
%yNăm có hai chữ số 00, 01, …, 99
%YTháng có 4 chữ số 0001, 0002, …, 9999
%bViết tắt tên tháng Jan, Feb, …, Dec ※1
%BTên tháng January, February, …, December ※1
%mTháng 01, 02, …, 12
%dNgày 01, 02, …, 31
%HGiờ(24 giờ) 00, 01, …, 23
%IGiờ(12 giờ) 00, 01, …, 11
%pAM or PM ※1
%MPhút 00, 01, …, 59
%SGiây 00, 01, …, 59
%fMicro giây 000000, 000001, …, 999999
%zTime zone, +0000, -0400 etc
%ZTime zone UTC, EST
%aViết tắt của thứ Sun, Mon, …, Sat ※1
%AThứ trong tuần Sunday, Monday, …, Saturday ※1
%cHiển thị ngày giờ một cách thích hợp ※1
%xHiển thị ngày tháng một cách thích hợp ※1
%XHiể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

mydt = datetime.datetime(2020, 7, 22, 20, 4, 38)
print(type(mydt))
print(mydt)
#>> <class 'datetime.datetime'>
#>> 2020-07-22 20:04:38

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")
print(type(dt_str))
print(dt_str)
#>> <class 'str'>
#>> 2020/07/22 Wed 20:04:38

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'))
#>> 2020-07-22 20:04:38

print(mydt.strftime('%y%m%d'))
#>> 200722

print(mydt.strftime('%A, %B %d, %Y'))
#>> Wednesday, July 22, 2020

print(mydt.strftime('Ngày %d Tháng %m Năm %Y'))
#>> Ngày 22 Tháng 07 Năm 2020

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
print('So thu tu cua ngay trong nam',mydt.strftime('|%j'))
#>> So thu tu cua ngay trong nam| 204

#Tính số thứ tự của tuần trong năm (tuần bắt đầu từ chủ nhật)
print('So thu tu cua tuan trong nam',mydt.strftime('|%U'))
#>> So thu tu cua tuan trong nam| 29

#Tính số thứ tự của tuần trong năm (tuần bắt đầu từ thứ hai)
print('So thu tu cua tuan trong nam',mydt.strftime('|%W'))
#>> So thu tu cua tuan trong nam| 29

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

hanoi_time = datetime.timezone(datetime.timedelta(hours=7))
dt_now = datetime.datetime.now(hanoi_time)

print(type(dt_now))
print(dt_now)

#>> <class 'datetime.datetime'>
#>> 2021-05-06 09:28:37.759004+07:00

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")
print(type(dt_str))
print(dt_str)
#>> <class 'str'>
#>> 2021/05/06 Thu 09:28:37

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'))
#>> 2021-05-06 09:28:37

print(dt_now.strftime('%y%m%d'))
#>> 210506

print(dt_now.strftime('%A, %B %d, %Y'))
#>> Thu, May 06, 2021

print(dt_now.strftime('Ngày %d Tháng %m Năm %Y'))
#>> Ngày 06 Tháng 05 Năm 2021

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
print('So thu tu cua ngay trong nam',dt_now.strftime('|%j'))
#>> So thu tu cua ngay trong nam| 126

#Tính số thứ tự của tuần trong năm (tuần bắt đầu từ chủ nhật)
print('So thu tu cua tuan trong nam',dt_now.strftime('|%U'))
#>> So thu tu cua tuan trong nam| 18

#Tính số thứ tự của tuần trong năm (tuần bắt đầu từ thứ hai)
print('So thu tu cua tuan trong nam',dt_now.strftime('|%W'))
#>> So thu tu cua tuan trong nam| 18

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
locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')

Hoặc tại Việt Nam:

import locale
locale.setlocale(locale.LC_ALL, 'vi_VN.UTF-8')

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
import locale

locale.setlocale(locale.LC_ALL, 'vi_VN.utf8')

hanoi_tz = datetime.timezone(datetime.timedelta(hours=7))
dt = datetime.datetime.now(hanoi_tz)

print(dt.strftime("|%Y/|%m/|%d |%a |%H:|%M:|%S"))
#>> 2021/05/06 T5 07:00:17

print(dt.strftime("|%B |%d,|%Y |%p |%I:|%M:|%S:|%f|%z"))
#>> Tháng 5 06,2021,SA 07:00:17:777669+0900

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
import locale

locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
dt = datetime.datetime.now(tokyo_tz)

print(dt.strftime("|%y/|%m/|%d |%A |%H:|%M:|%S"))
#>> 21/05/06 木曜日 09:00:17

print(dt.strftime("|%B |%d,|%Y |%p |%I:|%M:|%S|%z"))
#>> 05月 06,2021 午前 09:00:17+0900

print(dt.strftime("|%c"))
#>> 21/05/06 209:00:17

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é.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.