2017-08-17 5 views
0

任意のローカライズされたdatetimeオブジェクトが夏時間にあるかどうかをテストしようとしています。datetime.datetimeが夏時間になっているかどうかをテストします。.dst()関数はpytzタイムゾーンで値を返しません。

これは既に多くの人に似た質問です。例えば。 (Daylight savings time in Python

これらのボードでは、datetimeがDSTにあるかどうかをテストする方法は、組み込み関数.dst()を使用することです。これは、ブール値のようにラップされています

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

をしかし、私はaribtrary日時を作り、.DST()関数は何も報告しないtztimezoneを渡したときに。あたかもタイムゾーンが設定されていないかのように!

チェック問題を参照するには、このコードスニペットは:

>>> 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()結果を割り当て、それを比較する必要があります。これで、元の素朴なdatetimeの出力とチェック.dst()を表示するだけです。

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

は、真(mydateがDSTにあると仮定します)を返します。

関連する問題