Как конвертировать дату и время в другой часовой пояс? - PullRequest
0 голосов
/ 28 января 2019

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

Я уже пробовал .localize() и .astimezone, но вывод тот же.

phtimezone = timezone('Asia/Manila')
test = datetime.datetime.strptime('Sun Sep 16 03:38:40 +0000 2018','%a %b %d %H:%M:%S +0000 %Y')
date = phtimezone.localize(test)
print (date) 
date = test.astimezone(phtimezone)
print (date)

вывод 2018-09-16 03:38:40+08:00.Я ожидал, что это будет 2018-09-16 11:38:40+08:00.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Мне удалось это исправить благодаря @deceze.Вот код:

phtimezone = pytz.timezone('Asia/Manila')
test = datetime.datetime.strptime('Sun Sep 16 03:38:40 +0000 2018','%a %b %d %H:%M:%S %z %Y')
test_utc = test.replace(tzinfo=timezone('UTC'))
date = test_utc.astimezone(pytz.timezone('Asia/Manila'))
print (date)

Теперь вывод 2018-09-16 11:38:40+08:00

0 голосов
/ 28 января 2019

Ваш проанализированный объект test не содержит часовой пояс.Это наивный datetime объект.Использование localize и astimezone не может выполнить какое-либо преобразование, так как они не знают, из чего они преобразовывают;таким образом, они просто прикрепляют часовой пояс как дано наивному datetime.

. Также анализируем часовой пояс:

datetime.strptime('Sun Sep 16 03:38:40 +0000 2018','%a %b %d %H:%M:%S %z %Y')
                                                                      ^^

Это дает вам осведомленный datetime объектв часовом поясе UTC, который может быть преобразован в другие часовые пояса.

...