2017-08-17 45 views
0

我想測試任意本地化的日期時間對象是否處於夏令時。測試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 

回答

1

它的工作原理,但你需要localtime.localize()結果分配給一個變量和比較。現在,您只需顯示輸出並檢查原始日期時間的.dst()。

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

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