Использование шаблона '%z' для datetime.strptime()
У меня есть строковый текст, представляющий дату, и я отлично могу разобрать его и преобразовать в чистый объект даты и времени:
date = "[24/Aug/2014:17:57:26"
dt = datetime.strptime(date, "[%d/%b/%Y:%H:%M:%S")
За исключением того, что я не могу перехватить всю строку даты с часовым поясом, используя шаблон %z, как указано здесь
date_tz = 24/Aug/2014:17:57:26 +0200
dt = datetime.strptime(date, "[%d/%b/%Y:%H:%M:%S %z]")
>>> ValueError: 'z' is a bad directive in format '[%d/%b/%Y:%H:%M:%S %z]'
Потому что, как говорится в отчете об ошибке
strftime() реализуется для каждой платформы.
Я уточняю, что с наивной директивой tzinfo '%Z' такой проблемы нет.
Обходной путь: преобразование строки tzinfo в объект tzinfo
Я могу отлично найти следующий обходной путь, преобразовав строку формата времени GST в объект tzinfo [как предложено здесь][4] с помощью модуль dateutil, а затем вставьте tzinfo в объект datetime
Вопрос: сделать %z доступным для моей платформы?
Но поскольку мне, очевидно, понадобится шаблон %z для дальнейшего проекта, я хотел бы найти решение, позволяющее избежать этого обходного пути и использовать внешний модуль для этой простой задачи. Можете ли вы предложить мне что-нибудь почитать об этом? Я предположил, что более новая версия Python (у меня 2.7) справится с этим, но я бы не хотел менять свою версию сейчас из-за этой маленькой, но важной детали.
[РЕДАКТИРОВАТЬ]
Что ж, увидев комментарии, я переформулировал свой вопрос, как анализировать индикатор часового пояса электронной почты с помощью strptime(), не зная местного времени?
pytz
-› pytz.sourceforge.net. - person Gohn67   schedule 02.10.2014