Подтвердить что ты не робот

Как преобразовать строку Date в объект DateTime?

У меня следующая дата:

2005-08-11T16:34:33Z

Мне нужно знать, является ли это датой до или после datetime (2009,04,01), и я не могу найти способ, который преобразует эту строку в нечто, что позволяет мне сравнить его с datetime (2009, 04,01) значимым образом.

4b9b3361

Ответ 1

Поскольку строка находится в формате ISO, она может быть осмысленно сопоставлена ​​непосредственно с версией формата ISO datetime, которую вы упомянули:

>>> s='2005-08-11T16:34:33Z'
>>> t=datetime.datetime(2009,04,01)
>>> t.isoformat()
'2009-04-01T00:00:00'
>>> s < t
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare datetime.datetime to str
>>> s < t.isoformat()
True
>>> z='2009-10-01T18:20:12'
>>> z < t.isoformat()
False

как вы видите, в то время как вы не можете сравнивать строку с объектами datetime, если строки находятся в формате ISO, прекрасно сравнивать их с .isoformat() объектов datetime. То, что красота строкового представления формата ISO дат и времени: оно правильно сопоставимо и правильно сортирует как строки, не обязательно требуя преобразования в другие типы.

Если вы хотите конвертировать, конечно, вы можете:

>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2005, 8, 11, 16, 34, 33)

Ответ 3

Если вы знаете, что строка использует функцию datetime.datetime(год, месяц, день, час, минута, секунда). Разделите строку, чтобы получить соответствующие переменные и поместите ее, чтобы сделать ее типом даты. Затем просто сравните его с тем, что вам нужно.

Или вы можете использовать формат iso, как и предлагали люди.