Помните об этом, и вам не нужно было снова путаться в преобразовании даты и времени.
String to datetime object = strptime
объект datetime в другие форматы = strftime
Jun 1 2005 1:33PM
равно
%b %d %Y %I:%M%p
% b Месяц как сокращенное название локали (июнь)
% d День месяца в виде десятичного числа с нулем (1)
% Y Год с веком в виде десятичного числа (2015)
% I час (12-часовые часы) как десятичное число с нулем (01)
% M Минута как десятичное число с добавлением нуля (33)
% p Локальный эквивалент AM или PM (PM)
так что вам нужно strptime, т.е. преобразование string
в
>>> 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
...
Вывод
<type 'datetime.datetime'>
2005-06-01 13:33:00
<type 'datetime.datetime'>
1999-08-28 00:00:00
Что если у вас другой формат дат, вы можете использовать panda или 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]
Вывод
[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()
сводит вас с ума, если вы не оберните его. Смотрите мой ответ, основанный на ответе Or Weis на это