添加后的Python DST和时区检测



所以我现在有一行代码,看起来像这样:

        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

我希望结果考虑到可能发生的任何DST影响(例如,如果我在11/4/2012 00:30 am并添加3小时,我将得到02:30 am,由于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>)

注意,对于伦敦,夏令时转换发生在2012-10-28 02:00:00

相关内容

  • 没有找到相关文章

最新更新