gpt4 book ai didi

添加后Python DST & 时区检测

转载 作者:太空狗 更新时间:2023-10-29 21:50:49 26 4
gpt4 key购买 nike

所以我目前有一行代码看起来像这样:

        t1 = datetime(self.year, self.month, self.day, self.hour, self.minute, self.second)
...
t2 = timedelta(days=dayNum, hours=time2.hour, minutes=time2.minute, seconds=time2.second)
sumVal = t1 + t2

我希望结果考虑到可能发生的任何夏令时影响(例如,如果我在 2012 年 11 月 4 日凌晨 00:30 加上 3 小时,我会得到凌晨 02:30,因为DST 的回退)。我看过使用 pytz 和 python-dateutil,但它们似乎都不支持这个,或者至少在没有包含所有时区的单独文件的情况下不支持它。更重要的是,时间不一定与当前系统在同一时区,甚至可能在过去。我确信有一种简单的方法可以做到这一点(或者我希望 Python 如此),但现在似乎没有什么是我需要的。有什么想法吗?

最佳答案

也许 pytznormalize 方法就是您要找的:

import datetime as dt
import pytz

tz=pytz.timezone('Europe/London')
t1 = dt.datetime(2012,10,28,0,30,0)
t1=tz.localize(t1)
t2 = dt.timedelta(hours=3)
sumVal = t1 + t2

sumVal 保留在 BST 中:

print(repr(sumVal))
# datetime.datetime(2012, 10, 28, 3, 30, tzinfo=<DstTzInfo 'Europe/London' BST+1:00:00 DST>)

归一化后,sumVal 为 GMT:

sumVal = tz.normalize(sumVal)
print(repr(sumVal))
# datetime.datetime(2012, 10, 28, 2, 30, tzinfo=<DstTzInfo 'Europe/London' GMT0:00:00 STD>)

请注意,对于伦敦,DST 转换发生在 2012-10-28 02:00:00

关于添加后Python DST & 时区检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492930/

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