преобразовать дату в дату и время для часового пояса - PullRequest
0 голосов
/ 07 октября 2019

У меня есть API, который возвращает эту строку даты

strdate = '2019-10-07T06:09:28.984Z'

Как мне преобразовать его в объект datetime?

dt = datetime.datetime.strptime(strdate, '%Y-%m-%d')

Если я использую strptime, как указано выше, я получаю «ValueError: остаются не преобразованные данные: T06: 09: 54.346Z» Что мне делать, если в строковую дату включены «T» и «Z»? Я хочу данные по местному времени. Но действительно ли строка знает часовой пояс, чтобы я мог правильно ее преобразовать? В этом случае я знаю часовой пояс, но что, если я не знаю?

Ответы [ 2 ]

1 голос
/ 07 октября 2019
import datetime
strdate = '2019-10-07T06:09:28.984Z'
dt=datetime.datetime.strptime(strdate, "%Y-%m-%dT%H:%M:%S.%fZ")
print(dt)

# output - 2019-10-07 06:09:28.984000
1 голос
/ 07 октября 2019

Ошибка в том, что вы не включили часть времени в строку формата. Сделайте это:

datetime.strptime('2019-10-07T06:09:28.984Z', '%Y-%m-%dT%H:%M:%S.%f%z')

Это приведет к:

datetime.datetime(2019, 10, 7, 6, 9, 28, 984000, tzinfo=datetime.timezone.utc)

Если вы хотите преобразовать это в местный часовой пояс, сделайте это:

from pytz import timezone

dt = datetime.strptime(strdate, '%Y-%m-%dT%H:%M:%S.%f%z')
local_dt = dt.astimezone(timezone('Asia/Tokyo'))

Демонстрация:https://repl.it/repls/RotatingSqueakyCertifications

...