Проблема преобразования строки метки времени в Python - PullRequest
1 голос
/ 18 апреля 2020

У меня есть набор данных с метками времени в формате:

`'4/17/2020 5:55:00 AM'`

Обратите внимание, что между полями YYYY и HH есть 2 пробела. Исходное время указано в 'США / Восточный' часовой пояс. Я пытаюсь преобразовать его в IST (индийское стандартное время) . Это должно быть 'Asia / Kolkata' от pytz

Код ниже не работает, и я пробовал несколько версий этого. Даже преобразование в UT C не удается. Кодовый блок:

`
est_ts = '4/17/2020 5:55:00 AM'
est = pytz.timezone('US/Eastern')
ist = pytz.timezone('Asia/Kolkata')
print(dt.datetime.strptime(est_ts, '%m/%d/%Y  %I:%M:%S %p').astimezone(ist).strftime('%Y-%m-%d %H:%M:%S'))
`

Это дает вывод:

`2020-04-17 07:25:00`

В то время как правильный вывод должен быть:

`2020-04-17 15:25:00`

Что не так с этим код? Очень ценится.

1 Ответ

3 голосов
/ 18 апреля 2020

Сначала вам нужно localize исходная отметка времени, чтобы вы могли normalize в нужное место:

import datetime as dt
import pytz

est_ts = '4/17/2020 5:55:00 AM'
est = pytz.timezone('US/Eastern')
ist = pytz.timezone('Asia/Kolkata')

est_dt = est<b>.localize(dt.datetime.strptime(est_ts, '%m/%d/%Y  %I:%M:%S %p'))</b>
ist_dt = ist<b>.normalize(est_dt.astimezone(ist))</b>

print(ist_dt.strftime('%Y-%m-%d %H:%M:%S'))
#2020-04-17 15:25:00
...