Как преобразовать строку Date в объект DateTime? - PullRequest
20 голосов
/ 27 апреля 2010

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

2005-08-11T16:34:33Z

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

Ответы [ 3 ]

36 голосов
/ 27 апреля 2010

Поскольку строка в формате ISO, ее можно сравнивать по значению напрямую с версией datetime, указанной вами в формате ISO:

>>> 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)
1 голос
/ 30 июня 2016

Я бы рекомендовал взглянуть на: http://dateutil.readthedocs.io/en/stable/parser.html

from dateutil.parser import parse datetime = parse("Sat Oct 11 17:13:46 UTC 2003")

0 голосов
/ 27 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...