python datetime strptime не соответствует формату - PullRequest
0 голосов
/ 06 октября 2018

Это код, который я хочу запустить

from datetime import datetime

date="08/30/2017 10:02 pm (PDT)"

dt = datetime.strptime(date, '%m/%d/%Y %I:%M %p (%Z)')

date - это строка со значением 08/30/2017 10:02 PM (PDT)

Это выглядит прекрасно для меня, но python выдает мне эту ошибку:

time data '08/30/2017 10:02 PM (PDT)' does not match format '%m/%d/%Y %I:%M %p (%Z)' 

Код был запущен на удаленной машине с python 2.7.Однако, если я вручную введу этот код в локальный терминал Python.Работает отлично.

Есть ли что-то, что может изменить ситуацию?(Я пытался изменить дату между Unicode / Str, без разницы)

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Ваше решение работает, если вы замените PDT на UTC - кажется, что PDT не распознается:

from datetime import datetime

date="08/30/2017 10:02 pm (UTC)"

dt = datetime.strptime(date, '%m/%d/%Y %I:%M %p (%Z)')

print(dt) # 2017-08-30 22:02:00

против

date="08/30/2017 10:02 pm (PDT)"

dt = datetime.strptime(date, '%m/%d/%Y %I:%M %p (%Z)')

print(dt) #  time data '08/30/2017 10:02 pm (PDT)' does not match format '%m/%d/%Y %I:%M %p (%Z)'

(https://pyfiddle.io/ в режиме 2.7)

0 голосов
/ 06 октября 2018

Проверьте значение переменной окружения TZ.time.strptime использует переменную TZ для устранения неоднозначности сокращений часовых поясов, поскольку в противном случае они не будут уникальными.Я могу воспроизвести ошибку сопоставления с помощью TZ=Europe/Berlin, но получить успешный анализ с помощью TZ=America/Tijuana.

Другой источник несоответствия может возникнуть, если на другом компьютере имеются данные TZ, которые используют только числовые часовые пояса, что былоНесколько недавнее изменение (в 2017 году) для определенных часовых поясов (что также означало бы, что машина, на которой это работает, будет иметь крайне устаревшую базу данных часовых поясов).

...