0
from datetime import datetime

import pytz

tz = pytz.timezone("Asia/Singapore")

date_1 = datetime.now(tz=pytz.utc)
print(date_1.replace(tzinfo=tz).replace(tzinfo=pytz.utc).timestamp())
print(date_1.timestamp())

date_2 = datetime.now(tz=tz)
print(date_2.replace(tzinfo=pytz.utc).replace(tzinfo=tz).timestamp())
print(date_2.timestamp())

出力:

1483599557.338336
1483599557.338336
1483603457.33842
1483599557.33842

tzinfo を 2 回置き換えた後、変数 date_2 のタイムスタンプが異なるのはなぜですか?
変数 date_1 が同じであるためです。

4

1 に答える 1

0

タイム ゾーンとオフセットは、年々変化します。pytz が timezone オブジェクトを作成するときに提供されるデフォルトのゾーン名とオフセットは、そのゾーンで利用可能な最も古いものであり、時には奇妙なものに見えることがあります。正規化を使用してゾーンを日付に変更すると、適切なゾーン名とオフセットが置き換えられます。datetime コンストラクターを使用してゾーンを日付にアタッチするだけでは、正しく調整できません。

tz.normalize(pytz.utc.normalize(date_2)).timestamp() == date_2.timestamp()
于 2017-01-05T07:36:59.523 に答える