2016-09-12 7 views
4

なぜこれらの2つの行が異なる結果を生成するのですか?.localizeとtzinfoのPython datetimeの違い

>>> import pytz 
>>> from datetime ipmort datetime 

>>> local_tz = pytz.timezone("America/Los_Angeles") 

>>> d1 = local_tz.localize(datetime(2015, 8, 1, 0, 0, 0, 0)) # line 1 
>>> d2 = datetime(2015, 8, 1, 0, 0, 0, 0, local_tz) # line 2 
>>> d1 == d2 
False 

違いの理由は何ですか。また、日時をローカライズするために使用する必要がありますか?

答えて

4

このようにしてd2=datetime(2015, 8, 1, 0, 0, 0, 0, local_tz)を作成すると、夏時間が正しく処理されません。しかし、local_tz.localize()はそうです。

d1は

datetime.datetime(2015, 8, 1, 0, 0, 
        tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>) 

d2はあなたは、彼らが同じ時刻を表すされていないことがわかります

datetime.datetime(2015, 8, 1, 0, 0, 
        tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>) 

です。

d2あなたがUTCで作業するつもりなら、大丈夫です。 UTCには夏時間の移行がないため、対処します。

ので、タイムゾーンを処理するための正しい方法、それはとてもd1が回をローカライズするために、より適切かつ正しい方法であるlocal_tz.localize()

+0

を使用していますか? – Nick

+1

@こんにちは、そうです。 – levi

関連する問題