Thư viện Python dateutil
được thiết kế cho việc này (và nhiều hơn nữa). Nó sẽ tự động chuyển đổi điều này thành đối tượng datetime
cho bạn và tăng ValueError
nếu không thể.
Như một ví dụ:
>>> from dateutil.parser import parse
>>> parse("2003-09-25")
datetime.datetime(2003, 9, 25, 0, 0)
Điều này đặt ra một ValueError
nếu ngày không đúng định dạng:
>>> parse("2003-09-251")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace(**repl)
ValueError: day is out of range for month
dateutil
cũng là cực kỳ hữu ích nếu bạn bắt đầu cần phải phân tích các định dạng khác trong tương lai , vì nó có thể xử lý hầu hết các định dạng đã biết một cách thông minh và cho phép bạn sửa đổi đặc điểm kỹ thuật của mình: dateutil
parsing examples.
Nó cũng xử lý múi giờ nếu bạn cần.
Cập nhật dựa trên nhận xét: parse
cũng chấp nhận đối số từ khóa dayfirst
kiểm soát xem ngày hoặc tháng được dự kiến đến trước nếu ngày không rõ ràng. Giá trị mặc định là False. Ví dụ.
>>> parse('11/12/2001')
>>> datetime.datetime(2001, 11, 12, 0, 0) # Nov 12
>>> parse('11/12/2001', dayfirst=True)
>>> datetime.datetime(2001, 12, 11, 0, 0) # Dec 11
Nó có thể là hơn Pythonic (xin tha thứ, không phải xin phép) không kiểm tra ở tất cả, và bắt bất kỳ trường hợp ngoại lệ kết quả xảy ra. – Thomas
Liên quan: [Trong python, cách kiểm tra xem ngày có hợp lệ không?] (Http://stackoverflow.com/q/9987818/55075) – kenorb