2017-04-18 15 views
1

私はこの周りに私の頭を包むことはできません。python datetime.utcnowが正しいタイムスタンプを表示していません

1970年1月1日以降のunixtimeは合計秒であると仮定すると、なぜdatetime.utcnow()。timestamp()は異なる数値を返しますか?

>>> from datetime import datetime 
>>> now = datetime.utcnow() 
>>> print(now.timestamp()) 
1492525439.406112 
>>> print((now-datetime(1970,1,1)).total_seconds()) 
1492536239.406112 

答えて

2

あなたはタイムゾーンの問題を抱えています。

2つの値の差は正確に10,600秒で、正確には3時間です。

utcnowは、UTCタイムゾーンにあります。 datetimeは、ローカルマシンのタイムゾーンを使用します。それらを両方とも同じタイムベースを使用するように変更すると、もはや違いは見えません。

datetime.utcnowdatetime.nowに変更するか、datetime(...)datetime(...).replace(tzinfo=...)に変更することができます。

関連する問題