2017-02-09 4 views
0

Ich erhalte das Date-Objekt:Millisekunden Zeichenfolge/Datumsformat

now = datetime.utcnow() 
print(now) 

2017-02-09 14:00:31.256382 

Dann eine String-Darstellung machen:

to_string = now.strftime("%Y-%m-%d %H:%M:%S.%f") 
print(to_string) 

2017-02-09 14:00:31.256382 (it is a str object) 

ich wandle sie in Sekunden:

sec = now.replace(tzinfo=timezone.utc).timestamp() 
print(sec) 

1486648831.256382 

1) Ich versuche, die String-Darstellung zurück zu bekommen:

Ich kann mir nicht vorstellen, wie die Millisekunden dargestellt werden. Beachten Sie auch, dass timestamp Sekunden und nicht Millisekunden zurückgibt.

2) Wenn ich von Sekunden (oder Millisekunden in meinem Fall) zu dem Datumobjekt und nicht zum Stringobjekt zurückkehren möchte?

+0

Über die ms in der Stringdarstellung: Ich glaube, Sie 'now.strftime wollte ("% Y-% m-% d% H:% M:% S% f ")' anstelle von 'time.strftime' –

Antwort

3

Verwenden Sie die Methode utcfromtimestamp.

from datetime import datetime 

ts = 1486648831.256382 
print (datetime.utcfromtimestamp(ts)) 
>>> 2017-02-09 14:00:31.256382 

Class datetime.utcfromtimestamp (Zeitstempel)

Return der Datumzeit UTC-Zeitstempel an den POSIX entspricht, mit Tzinfo Keine. Dies kann ValueError auslösen, wenn der Zeitstempel außerhalb des Wertebereichs liegt, der von der Funktion plattform C gmtime() unterstützt wird. Es ist üblich für diese in Jahren 1970 bis 2038 Jahren beschränkt werden. Siehe auch von Zeitstempel().

Das zurückgegebene Objekt ist <class 'datetime.datetime'>

+0

Ok, danke! Was die Millisekunden angeht, spielt es keine Rolle, dass der Zeitstempel Sekunden zurückgibt, da Sie die Zeichenfolge wie gewünscht darstellen können, oder? – George

+0

@ George, das ist richtig. –