2017-04-18 5 views
1

Ich kann meinen Kopf nicht darum wickeln.python datetime.utcnow zeigt nicht den richtigen timestamp

Unter der Annahme, dass unixtime insgesamt Sekunden seit 1970.1.1 ist, warum gibt datetime.utcnow(). Timestamp() eine andere Zahl zurück?

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

Antwort

2

Sie haben eine Zeitzone Problem.

Der Unterschied zwischen den beiden Werten beträgt genau 10.600 Sekunden, also genau drei Stunden.

utcnow ist in der UTC-Zeitzone. datetime verwendet die lokale Maschinenzeitzone. Ändern Sie beide, um die gleiche Zeitbasis zu verwenden, und Sie werden sehen, dass es keinen Unterschied mehr gibt.

Sie könnten datetime.utcnow in datetime.now ändern oder datetime(...) in datetime(...).replace(tzinfo=...) ändern.

Verwandte Themen