Hãy nhớ điều này và bạn không cần phải nhầm lẫn trong chuyển đổi datetime một lần nữa.
Chuỗi đối tượng datetime = strptime
đối tượng datetime sang các định dạng khác = strftime
Jun 1 2005 1:33PM
bằng với
%b %d %Y %I:%M%p
% b Tháng là tên viết tắt của miền địa phương (Jun)
% d Ngày trong tháng dưới dạng số thập phân có đệm (1)
% Y Năm với thế kỷ là số thập phân (2015)
% I Hour (đồng hồ 12 giờ) dưới dạng số thập phân không có đệm (01)
% M Phút dưới dạng số thập phân có đệm (33)
% p Địa điểm tương đương với AM hoặc PM (PM)
Vì vậy, bạn cần strptime tức là chuyển đổi string
sang
>>> dates = []
>>> dates.append('Jun 1 2005 1:33PM')
>>> dates.append('Aug 28 1999 12:00AM')
>>> from datetime import datetime
>>> for d in dates:
... date = datetime.strptime(d, '%b %d %Y %I:%M%p')
... print type(date)
... print date
...
Đầu ra
<type 'datetime.datetime'>
2005-06-01 13:33:00
<type 'datetime.datetime'>
1999-08-28 00:00:00
Điều gì sẽ xảy ra nếu bạn có định dạng ngày khác nhau, bạn có thể sử dụng panda hoặc dateutil.parse
>>> import dateutil
>>> dates = []
>>> dates.append('12 1 2017')
>>> dates.append('1 1 2017')
>>> dates.append('1 12 2017')
>>> dates.append('June 1 2017 1:30:00AM')
>>> [parser.parse(x) for x in dates]
Ra ngoài
[datetime.datetime(2017, 12, 1, 0, 0), datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 1, 12, 0, 0), datetime.datetime(2017, 6, 1, 1, 30)]
strptime()
sẽ lái bạn hạt, trừ khi bạn bọc nó. Xem câu trả lời của tôi, dựa trên câu trả lời của Or Weis cho điều này