首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python获取从UTC到给定时区的时差

使用Python获取从UTC到给定时区的时差
EN

Stack Overflow用户
提问于 2012-07-04 21:18:12
回答 1查看 9.5K关注 0票数 6

有没有办法获得UTC和给定时区之间的时差?

例如,UTC与欧洲/阿姆斯特丹之间的时差为+2小时。

在python中有什么东西可以解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-04 21:42:25

假设你有一个带有时区的datetime:

代码语言:javascript
复制
import datetime
import pytz

d = datetime.datetime(2012, 1, 1, 0, 0, 0, tzinfo=pytz.utc)
In [54]: d
Out[54]: datetime.datetime(2012, 1, 1, 0, 0, tzinfo=<UTC>)

要将此时间转换为阿姆斯特丹时间,请使用:

代码语言:javascript
复制
ams = pytz.timezone('Europe/Amsterdam')

In [55]: d.astimezone(ams)
Out[55]: datetime.datetime(2012, 1, 1, 1, 0, tzinfo=<DstTzInfo 'Europe/Amsterdam' CET+1:00:00 STD>)

pst = timezone('US/Pacific')
In [118]: d.astimezone(pst)
Out[118]: datetime.datetime(2011, 12, 31, 16, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)

如果我们有一个不带时区的datetime (naive datetime),我们可以这样转换它:

代码语言:javascript
复制
dd = datetime.datetime(2012, 2, 2, 0, 0)
ams.localize(naive_dt).astimezone(pst)  # set it as 'ams' first, then convert to pst
Out[131]: datetime.datetime(2012, 2, 1, 15, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)

要查看两个时区的差异,请执行以下操作:

代码语言:javascript
复制
In [137]: ams.utcoffset(datetime.datetime(2012,1,1))
Out[137]: datetime.timedelta(0, 3600)

In [138]: pst.utcoffset(datetime.datetime(2012,1,1))
Out[138]: datetime.timedelta(-1, 57600)

因此,根据UTC,ams为+1H,pst为-8 (-1天+16H)

编辑:如docs中所述,这是:

代码语言:javascript
复制
datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam)

不会起作用。

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

https://stackoverflow.com/questions/11329904

复制
相关文章

相似问题

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