datetime.datetime.fromtimestamp()
ist korrekt, außer dass Sie wahrscheinlich einen Zeitstempel in Millisekunden haben (wie in JavaScript), aber einen fromtimestamp()
Unix-Zeitstempel in Sekunden erwarten.
Mach es so:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
und das Ergebnis ist:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Beantwortet es Ihre Frage?
EDIT : JF Sebastian hat richtig vorgeschlagen, die wahre Division durch 1e3
(float 1000
) zu verwenden. Der Unterschied ist signifikant, wenn Sie genaue Ergebnisse erhalten möchten, daher habe ich meine Antwort geändert. Der Unterschied ergibt sich aus dem Standardverhalten von Python 2.x, das int
beim Teilen (mit dem /
Operator) int
durch int
(dies wird als Bodenteilung bezeichnet ) immer zurückgegeben wird. Durch Ersetzen des Divisors 1000
(als int
) durch den 1e3
Divisor ( 1000
als Float) oder durch float(1000)
(oder 1000.
usw.) wird die Division zur wahren Division . Python 2.x kehrt zurück, float
wenn int
durch float
, float
durch int
, geteilt wirdfloat
von float
usw. Und wenn der an die fromtimestamp()
Methode übergebene Zeitstempel einen Bruchteil enthält, enthält das Ergebnis dieser Methode auch Informationen zu diesem Bruchteil (als Anzahl der Mikrosekunden).
/ 1e3
x * 0.001
undx / 1e3
beide gleich sind, liegt der Unterschied in der Notation und Länge (die ursprüngliche ist kürzer). Für manche Menschen ist es möglicherweise klarer, tatsächlich durch die Zahl zu dividieren, anstatt mit der von Ihnen vorgeschlagenen multiplikativen inversen Zahl (1/x
) zu multiplizieren . Aber danke, dass Sie einen alternativen Ansatz vorgeschlagen haben.fromtimestamp
Geben Sie Datum und Uhrzeit in Ortszeit an. Geben Sieutcfromtimestamp
Datum und Uhrzeit in UTC an.