测试datetime.datetime是否在夏时制中使用.dst()函数不返回带pytz时区的值

问题描述:

我想测试任意本地化的日期时间对象是否处于夏令时。测试datetime.datetime是否在夏时制中使用.dst()函数不返回带pytz时区的值

这是许多已经问过的类似问题。例如。 (Daylight savings time in Python

在这些板中,测试日期时间是否在DST中的一种方法是使用内置函数.dst()。这被裹成布尔,如:

if bool(mydatetimeobject.dst()): 
    print ("date is DST!") 

但是,每当我做出aribtrary datetime和传递tztimezone的.DST()函数不报什么。就好像时区没有设置一样!

入住此代码段看问题:

>>> from datetime import datetime 
>>> import pytz 
>>> localtime = pytz.timezone('US/Central') 

>>> mydate = datetime(2004,3,1) # day in standard time 
>>> localtime.localize(mydate) 
datetime.datetime(2004, 3, 1, 0, 0, tzinfo=<DstTzInfo 'US/Central' CST-1 day, 18:00:00 STD>) 
>>> mydate.dst() 

>>> mydate = datetime(2004,5,1) #day in daylight time 
>>> localtime.localize(mydate) 
datetime.datetime(2004, 5, 1, 0, 0, tzinfo=<DstTzInfo 'US/Central' CDT-1 day, 19:00:00 DST>) 
>>> mydate.dst() 
>>> bool(mydate.dst()) 
False 

它的工作原理,但你需要localtime.localize()结果分配给一个变量和比较。现在,您只需显示输出并检查原始日期时间的.dst()。

a = localtime.localize(mydate) 
bool(a.dst()) 

返回True(假设mydate在DST中)。