【问题标题】:How to convert one timezone to another (GMT+0530)?如何将一个时区转换为另一个时区 (GMT+0530)?
【发布时间】:2019-04-14 06:31:15
【问题描述】:

这个日期格式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) 。以下 sn-p 详细信息:

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

【问题讨论】:

标签: python timezone utc pytz gmt


【解决方案1】:

我认为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'

试试docs;这是一个非常强大且易于使用的模块。

【讨论】:

  • 当我在上面发布我的代码时,我得到了想要的结果。但只有一点时差,输入:2018-11-11 01:54:16+00:00,预期:2018 年 11 月 11 日 7:24:16 AM GMT+0530,实际:2018 年 11 月 11 日 07:24 :上午 16 点 IST+0530。它在文本 IST 和 GMT 之间。
  • 好的...试试箭头库,我保证你会惊讶于它的易用性
  • 谢谢@Jack。查看箭头库。上面的代码有什么运气吗?我想需要稍微修正一下。
  • 应该是UTC+0530或者GMT+0530,相当于ISTtimeanddate.com/time/current-number-time-zones.html
猜你喜欢
  • 2022-01-24
  • 2012-10-27
  • 1970-01-01
  • 2015-05-06
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
相关资源
最近更新 更多