CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnChuyển đổi chuỗi thành datetime trong Python như thế nào?
Chuyên gia

Chuyển đổi chuỗi thành datetime trong Python như thế nào?

CyStack blog 6 phút để đọc
CyStack blog11/08/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 6 minutes

Cả hai module datetimetime của Python đều có một phương thức strptime(). Trong bài viết này, chúng ta sẽ sử dụng nó để chuyển đổi chuỗi thành đối tượng datetimetime.

Chuyển đổi chuỗi thành datetime trong Python

Chuyển đổi chuỗi thành đối tượng datetime bằng datetime.strptime()

Phương thức datetime.strptime() có cú pháp như sau:

datetime.strptime(date_string, format)

Phương thức này trả về một đối tượng datetime khớp với chuỗi ngày giờ date_string được phân tích bởi format. Cả hai tham số đều là bắt buộc và phải ở dạng chuỗi.

Để biết thêm chi tiết về các chỉ thị định dạng được sử dụng trong datetime.strptime(), hãy tham khảo mục Format Code của strftime()strptime() trong tài liệu chính thức của Python.

Ví dụ chuyển đổi chuỗi thành datetime.datetime()

Ví dụ sau đây chuyển đổi một chuỗi ngày và giờ thành đối tượng datetime.datetime(), sau đó in ra tên class và giá trị của đối tượng kết quả:

from datetime import datetime

datetime_str = '09/19/22 13:55:26'

datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')

print(type(datetime_object))
print(datetime_object)  # printed in default format

Kết quả đầu ra:

<class 'datetime.datetime'>
2022-09-19 13:55:26

Ví dụ chuyển đổi chuỗi thành datetime.date()

Ví dụ sau đây chuyển đổi một chuỗi ngày tháng thành đối tượng datetime.date(), sau đó in ra kiểu class và giá trị của đối tượng kết quả:

from datetime import datetime

date_str = '09-19-2022'

date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object)  # printed in default format

Kết quả đầu ra:

<class 'datetime.date'>
2022-09-19

Ví dụ chuyển đổi chuỗi thành datetime.time()

Ví dụ sau đây chuyển đổi một chuỗi thời gian thành đối tượng datetime.time(), sau đó in ra kiểu class và giá trị của đối tượng kết quả:

from datetime import datetime

time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)

Kết quả đầu ra:

<class 'datetime.time'>
13:55:26

Ví dụ chuyển đổi chuỗi thành datetime.datetime() với locale

Ví dụ sau đây chuyển đổi một chuỗi ngày tháng theo locale (định dạng ngày, số, tiền tệ,v.v… cho từng nơi) của Đức thành đối tượng datetime.datetime(), sau đó in ra kiểu class và giá trị của đối tượng kết quả:

from datetime import datetime
import locale

locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag'  # de_DE locale
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)

Kết quả đầu ra:

<class 'datetime.datetime'>
2022-12-16 00:00:00

Lưu ý rằng đối tượng kết quả không bao gồm tên của ngày trong tuần từ chuỗi đầu vào, vì đối tượng datetime.datetime() chỉ chứa thông tin về ngày trong tuần dưới dạng một số thập phân.

Chuyển đổi chuỗi thành struct_time bằng time.strptime()

Phương thức time.strptime() có cú pháp như sau:

time.strptime(time_string[, format])

Phương thức time.strptime() trả về một đối tượng time.struct_time khớp với time_string được parse bởi format. Tham số time_string là bắt buộc và cả hai tham số đều phải là chuỗi. Nếu format không được cung cấp, giá trị mặc định sẽ là:

'%a %b %d %H:%M:%S %Y'

Định dạng này tương ứng với định dạng được trả về bởi hàm ctime().

Các chỉ thị định dạng cho time.strptime()datetime.strptime() là giống nhau. Bạn có thể tìm hiểu thêm về các chỉ thị định dạng cho module time trong tài liệu của Python.

Ví dụ chuyển đổi chuỗi thành đối tượng struct_time với format được cung cấp

Ví dụ sau đây chuyển đổi một chuỗi thời gian thành đối tượng time.struct_time() bằng cách cung cấp tham số format, sau đó in ra giá trị của đối tượng kết quả:

import time

time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)

Kết quả đầu ra:

A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)

Như kết quả ở trên cho thấy, khi ta chuyển đổi một chuỗi thành đối tượng time.struct_time(), phương thức strptime() sẽ sử dụng các giá trị giữ chỗ (placeholder) cho bất kỳ chỉ thị định dạng nào không được định nghĩa trong tham số format.

Ví dụ chuyển đổi chuỗi thành đối tượng struct_time sử dụng định dạng mặc định

Nếu bạn không cung cấp tham số format khi chuyển đổi một chuỗi thời gian thành đối tượng time.struct_time(), định dạng mặc định sẽ được sử dụng và một lỗi sẽ xảy ra nếu chuỗi đầu vào không khớp chính xác với định dạng mặc định sau:

'%a %b %d %H:%M:%S %Y'

Ví dụ sau đây chuyển đổi một chuỗi thời gian thành đối tượng time.struct_time() mà không cung cấp tham số format, sau đó in ra giá trị của đối tượng kết quả:

import time

# default format - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)

Kết quả đầu ra:

A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)

Như kết quả trên đã cho thấy, khi ta chuyển đổi một chuỗi thành đối tượng time.struct_time(), phương thức strptime() sẽ sử dụng các giá trị giữ chỗ cho bất kỳ chỉ thị định dạng nào không được định nghĩa trong tham số format hoặc bởi định dạng mặc định nếu không có format nào được cung cấp.

Xử lý lỗi của strptime()

Nếu chuỗi đầu vào không thể được parse bởi strptime() bằng định dạng đã cung cấp, lỗi ValueError sẽ xảy ra. Ta có thể sử dụng khối try...except để kiểm tra các lỗi phân tích này, cùng với khối finally để in kết quả. Các thông báo ValueError nhận được khi sử dụng phương thức strptime() giải thích rất rõ ràng nguyên nhân của lỗi.

Ví dụ sau đây minh họa một số lỗi thường gặp, chẳng hạn như có dữ liệu thừa hoặc định dạng không khớp:

from datetime import datetime
import time

datetime_str = '09/19/18 13:55:26'

try:
    datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
    print('ValueError 1:', ve1)

time_str = '99::55::26'

try:
    time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
    print('ValueError 2:', ve2)

Kết quả đầu ra:

ValueError 1: unconverted data remains:  13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'

Câu hỏi thường gặp (FAQs)

Làm thế nào để chuyển đổi chuỗi ngày tháng mm dd yyyy của Python sang datetime?

Để chuyển đổi một chuỗi ngày tháng ở định dạng mm dd yyyy sang đối tượng datetime trong Python, bạn có thể sử dụng phương thức strptime() từ module datetime:

from datetime import datetime

date_string = "12 25 2024"
date_object = datetime.strptime(date_string, "%m %d %Y")
print(date_object)

Kết quả đầu ra:

2024-12-25 00:00:00

Làm thế nào để chuyển đổi một chuỗi sang ngày tháng ở định dạng mm dd yyyy?

Bạn có thể chuyển chuỗi thành đối tượng datetime và sau đó chỉ trích xuất phần ngày tháng:

from datetime import datetime

date_string = "12 25 2024"
date_object = datetime.strptime(date_string, "%m %d %Y").date()
print(date_object)

Kết quả đầu ra:

12 25 2024

Làm thế nào để chuyển đổi một chuỗi sang định dạng yyyy-mm-dd trong Python?

Đầu tiên, hãy chuyển chuỗi thành đối tượng datetime rồi định dạng nó thành chuỗi yyyy-mm-dd mong muốn:

from datetime import datetime

date_string = "12 25 2024"
date_object = datetime.strptime(date_string, "%m %d %Y")
formatted_date = date_object.strftime("%Y-%m-%d")
print(formatted_date)

Kết quả đầu ra:

2024-12-25

Làm thế nào để chuyển đổi đối tượng datetime sang định dạng dd, mm, yyyy trong Python?

Bạn có thể sử dụng phương thức strftime() để định dạng một đối tượng datetime thành một định dạng chuỗi cụ thể:

from datetime import datetime

date_object = datetime(2024, 12, 25)
formatted_date = date_object.strftime("%d, %m, %Y")
print(formatted_date)

Kết quả đầu ra là:

25, 12, 2024

Làm thế nào để chuyển đổi một chuỗi sang datetime trong Python?

Phương thức datetime.strptime() có thể được sử dụng để chuyển một chuỗi thành đối tượng datetime. Ví dụ:

from datetime import datetime

date_string = "2024-12-25"
date_object = datetime.strptime(date_string, "%Y-%m-%d")
print(date_object)

Kết quả đầu ra:

2024-12-25 00:00:00

Biểu thức chính quy cho định dạng ngày tháng mm dd yyyy trong Python là gì?

Một biểu thức chính quy để khớp với chuỗi ngày tháng ở định dạng mm dd yyyy có dạng như sau:

import re

regex = r"^(0[1-9]|1[0-2]) ([0-2][0-9]|3[01]) (\\d{4})$"
date_string = "12 25 2024"

if re.match(regex, date_string):
    print("Valid date format")
else:
    print("Invalid date format")

Biểu thức chính quy này đảm bảo:

  • mm nằm trong khoảng từ 01 đến 12 (tháng).
  • dd nằm trong khoảng từ 01 đến 31 (ngày).
  • yyyy là một năm có bốn chữ số.

Tổng kết

Trong bài hướng dẫn này, ta đã học cách chuyển đổi các chuỗi ngày và giờ thành đối tượng datetimetime bằng Python. Ngoài ra, bạn cũng đã biết cách phát hiện và khắc phục một số lỗi thường gặp khi định dạng không khớp với dữ liệu đầu vào. Thực hành các ví dụ sẽ giúp bạn hiểu rõ hơn và áp dụng linh hoạt trong nhiều tình huống xử lý dữ liệu khác nhau.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất