Нет, сравнение строк не будет работать здесь; значения не сортируются в соответствии с полной датой, но в соответствии с месяцем и днем месяца, в течение первых 10 дней месяца, которые постепенно разбросаны по всему виду, поскольку число дней не равно нулю. Если сначала был указан год, за которым следует нулевой заполненный числовой месяц, день, часы (с использованием 24-часовых часов) и минут, , то вы могли бы сделать это только как строки, потому что тогда лексикографическая сортировка будет соответствовать пути дата и время будут отсортированы.
Вместо разбора вашу строку в datetime
объекта с помощью datetime.datetime.strptime()
class method:
dt = datetime.datetime.strptime(string, '%b %d, %Y %I:%M %p')
if dt < datetime.datetime.now():
# in the past.
Demo:
>>> import datetime
>>> string = 'Apr 17, 2016 02:00 AM'
>>> dt = datetime.datetime.strptime(string, '%b %d, %Y %I:%M %p')
>>> dt
datetime.datetime(2016, 4, 17, 2, 0)
>>> dt < datetime.datetime.now()
False
Если вы форматировать даты, используя ISO8601 combined date-time format, то вы бы иметь формат, который может быть отсортирован только как строки:
>>> datetime.datetime.now().isoformat()
'2016-04-15T09:55:09.907130'