gpt4 book ai didi

python - 如何获得从 UTC 到给定时区的时差?

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:42 26 4
gpt4 key购买 nike

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

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

在 python 中有这方面的东西吗?

最佳答案

假设您有一个带时区的日期时间:

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>)

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

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>)

如果我们有一个没有时区的日期时间(原始日期时间),我们可以这样转换它:

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>)

要查看两个时区之间的差异:

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)

所以 ams 根据 UTC 为 +1H,而 pst 为 -8(-1 天和 +16H)

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

datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam)

将不起作用。

关于python - 如何获得从 UTC 到给定时区的时差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com