2016-07-04 7 views
5

Я пытаюсь просто создать дату и время объект со следующей даты: «Пт мар 11, 15:59:57 EST 2016» с использованием формата: «% a% b% d% H:% M:% S% Z% Y».Данные ValueError time 'Пт Мар 11, 15:59:57 EST 2016' не соответствует формату '% a% b% d% H:% M:% S% Z% Y'

Вот код.

from datetime import datetime 
date = datetime.strptime('Fri Mar 11 15:59:57 EST 2016', '%a %b %d %H:%M:%S %Z %Y') 

Однако это приводит к ValueError, как показано ниже.

ValueError: time data 'Fri Mar 11 15:59:57 EST 2016' does not match format '%a %b %d %H:%M:%S %Z %Y' 

Возможно, у меня отсутствует что-то явно неправильное с моей строкой формата, но я проверил ее снова и снова. Любая помощь будет очень признательна, спасибо.

Редактировать, чтобы отразить комментарии/вопросы для получения дополнительной информации:

Питон версии я использую 2.7.6.

Использование команды 'локали на Ubuntu 14.04 я получаю это:

$ locale 
LANG=en_US.UTF-8 
LANGUAGE= 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL= 
+2

Я пробовал ваш код, и он работает для меня; какую версию Python вы используете? –

+0

Я использую Python 2.7.6 –

+0

Вы случайно используете компьютер, в котором используется языковая установка, отличная от английского? –

ответ

8

Для% Z спецификатора strptime распознает только «UTC», «GMT» и все, что в time.tzname (так ли она признает «EST» будет зависеть от часового пояса вашего компьютера). Это issue 22377.

См: Python strptime() and timezones? и Parsing date/time string with timezone abbreviated name in Python?

Лучший вариант для разбора часовых поясов, которые включают временную зону удобочитаемой по-прежнему использовать в качестве третьей стороны python-dateutil библиотеки:

import dateutil 
date = dateutil.parse('Fri Mar 11 15:59:57 EST 2016' 

Если вы не можете установить питон -dateutil, вы можете отключить часовой пояс и вручную разобрать его, например используя поиск в словаре.

+0

Проблема также здесь. Действительно, я решил, что проблема заключается в подстроке 'EST', и вы только что подтвердили эту проблему. В этом случае существует ли безопасный способ проанализировать эти строки и избежать этой проблемы? –

+1

@ JeandersonBarrosCândido лучшим вариантом является использование python-dateutil. Я обновил свой ответ, чтобы добавить это, спасибо. – ecatmur

+0

Вот и все. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^