Как конвертировать один часовой пояс в другой (GMT + 0530)? - PullRequest
0 голосов
/ 11 ноября 2018

Этот формат даты 2018-11-11 01:54:16+00:00 следует преобразовать в Nov 11, 2018 7:24:16 AM GMT+0530

Input : 2018-11-11 01:54:16+00:00
Expected : Nov 11, 2018 7:24:16 AM GMT+0530
Actual :  Nov 11, 2018 07:24:16 AM IST+0530

Я могу преобразовать время, но не часовой пояс, как указано выше Expected & Actual (GMT & IST). Ниже приведены детали фрагмента:

from pytz import timezone
from dateutil import parser
from datetime import datetime

fmt = "%b %d, %Y %H:%M:%S %p %Z%z"
dt = '2018-11-11 01:54:16+00:00'
tmp = parser.parse(dt)
t1 = tmp.astimezone(timezone('Asia/Kolkata'))
print t1 #prints "2018-11-11 07:24:16+05:30"
print t1.strftime(fmt) #prints "Nov 11, 2018 07:24:16 AM IST+0530"

t1 = tmp.astimezone(timezone('GMT'))
print t1.strftime(fmt)    #prints "Nov 11, 2018 01:54:16 AM GMT+0000"

Я что-то пропускаю для печати GMT (вместо IST)?

Nov 11, 2018 7:24:16 AM GMT+0530

1 Ответ

0 голосов
/ 11 ноября 2018

Я думаю, что модуль Arrow подойдет лучше всего;

>>> import arrow
>>> utc = arrow.utcnow()
>>> utc
<Arrow [2013-05-11T21:23:58.970460+00:00]>

>>> utc = utc.shift(hours=-1)
>>> utc
<Arrow [2013-05-11T20:23:58.970460+00:00]>

>>> local = utc.to('US/Pacific')
>>> local
<Arrow [2013-05-11T13:23:58.970460-07:00]>

В соответствии с вашими потребностями это прекрасно работает;

>>> asia = arrow.now('Asia/Kolkata')
>>> asia.to('GMT').format("MMM D, YYYY HH:mm:ss A ZZ")

'Nov 11, 2018 10:01:24 AM +00:00'

Попробуйте документы ; это очень мощный и простой в использовании модуль.

...