首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个时区转换为另一个时区(GMT+0530)?

如何将一个时区转换为另一个时区(GMT+0530)?
EN

Stack Overflow用户
提问于 2018-11-11 16:03:58
回答 1查看 553关注 0票数 0

应将此日期格式2018-11-11 01:54:16+00:00转换为Nov 11, 2018 7:24:16 AM GMT+0530

代码语言:javascript
复制
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)那样转换时区。下面是代码片段的详细信息:

代码语言:javascript
复制
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)的内容?

代码语言:javascript
复制
Nov 11, 2018 7:24:16 AM GMT+0530
EN

回答 1

Stack Overflow用户

发布于 2018-11-11 16:30:18

我认为Arrow模块最适合这个;

代码语言:javascript
复制
>>> 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]>

具体到您的需求,这工作得很好;

代码语言:javascript
复制
>>> 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;这是一个非常强大且易于使用的模块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53246876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档