ValueError: данные времени '2020-04-23T13: 03: 49.911533 + 00: 00' не соответствуют формату '% Y-% m-% dT% H:% M:% S.% f% z' - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь исправить ошибку, которая продолжает появляться в некоторых созданных мной скриптах. В основном я получаю некоторые данные из базы данных Postgres, которая включает поле timestamptz.

Когда я обрабатываю эти данные, я иногда получаю следующую ошибку:

ValueError: time data '2020-04-23T13:03:49.911533+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

Код, в котором это происходит:

last_seen_at_date = datetime.strptime(dict['last_seen_at'],'%Y-%m-%dT%H:%M:%S.%f%z').date()

Я не понимаю, как это может произойти. Когда я копирую, вставляю эту строку и использую ее как переменную, а затем конвертирую ее в дату, она работает отлично. серверы, работающие на Ubuntu. Не знаю, как это исправить.

Есть идеи, что происходит?

Спасибо,

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Исправлена ​​проблема с использованием существующего ответа. Это проблема с другой версией Python, работающей на моих серверах.

Datetime strptime проблема со смещением часового пояса с двоеточиями

0 голосов
/ 07 мая 2020

'2020-04-23T13: 03: 49.911533 + 00: 00'

Это похоже на формат ISO 8601, поэтому он должен работать с datetime.datetime. fromisoformat . Я тестировал его, используя Python 3.7.3, и, похоже, он работает правильно:

import datetime
dt_str ='2020-04-23T13:03:49.911533+00:00'
dt = datetime.datetime.fromisoformat(dt_str)
print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)

Вывод:

2020 4 23 13 3 49

Можете ли вы проверить это в своем коде?

...