Функция dateutil.parser.parse()
не принимает форматтера. Он анализирует широкий диапазон форматов datetime без конфигурации.
Используйте метод datetime.datetime.strptime()
класса вместо:
from datetime import datetime
result = datetime.strptime(mydt, DateFormat)
Примите во внимание, что без года на входе, в результате datetime()
объекта будет иметь набор года для 1900
. Вы всегда можете исправить, что с текущего года:
this_year = datetime.now().year
result = result.replace(year=this_year)
Если вам необходимо поддерживать 29 февраля в високосные годы, добавить год к введенному и разобрать, что:
DateFormat = '%Y %d-%m %H:%M:%S'
year_prefix = '{:%Y} '.format(datetime.now())
result = datetime.strptime(year_prefix + mydt, DateFormat)
Демо:
>>> from datetime import datetime
>>> DateFormat = '%d-%m %H:%M:%S'
>>> datetime.strptime(mydt, DateFormat)
datetime.datetime(1900, 6, 25, 1, 2, 3)
>>> this_year = datetime.now().year
>>> datetime.strptime(mydt, DateFormat).replace(year=this_year)
datetime.datetime(2015, 6, 25, 1, 2, 3)
>>> DateFormat = '%Y %d-%m %H:%M:%S'
>>> year_prefix = '{:%Y} '.format(datetime.now())
>>> datetime.strptime(year_prefix + mydt, DateFormat)
datetime.datetime(2015, 6, 25, 1, 2, 3)
Спасибо! Попробуйте это сейчас. За работой. Интересно, что, по-видимому, в python было прекрасно отправлять «дополнительные» параметры методу, и python просто молча игнорирует их? – javadba
Чтобы поддержать високосные годы, включите год в строку времени: 'datetime.strptime (str (datetime (2000,1,1) .year) + '-29-02', '% Y-% d-% m') ' – jfs
@JFSebastian: Вы имели в виду, что объект' datetime' был динамическим? Потому что это ужасно верный способ написания '' 2000 '+ '... :-) –