493 Stimmen

Wie kann ich ein datetime-Objekt in Python in Millisekunden seit Epoche (Unix-Zeit) konvertieren?

Ich habe eine Python datetime Objekt, das ich in Unix-Zeit umwandeln möchte, oder Sekunden/Millisekunden seit 1970.

Wie kann ich das tun?

3 Stimmen

1 Stimmen

Wenn Sie hier gelandet sind und nur aktuell Epochensekunden mit Millisekundengenauigkeit, versuchen Sie $ python -c 'import time; print(time.time())' die gab: 1584487455.698623

0 Stimmen

@MarkHu das scheint Mikrosekundengenau zu sein.

570voto

Sophie Alpert Punkte 133000

Am einfachsten scheint mir die folgende Vorgehensweise zu sein

import datetime

epoch = datetime.datetime.utcfromtimestamp(0)

def unix_time_millis(dt):
    return (dt - epoch).total_seconds() * 1000.0

322voto

eshizhan Punkte 3707

In Python 3.3 wurde eine neue Methode timestamp :

import datetime
seconds_since_epoch = datetime.datetime.now().timestamp()

In Ihrer Frage hieß es, dass Sie Millisekunden benötigen, die Sie wie folgt erhalten können:

milliseconds_since_epoch = datetime.datetime.now().timestamp() * 1000

Wenn Sie timestamp auf ein naives datetime-Objekt, so wird angenommen, dass es sich in der lokalen Zeitzone befindet. Verwenden Sie zeitzonenkonforme datetime-Objekte, wenn dies nicht der Fall sein soll.

107voto

miku Punkte 170688
>>> import datetime
>>> # replace datetime.datetime.now() with your datetime object
>>> int(datetime.datetime.now().strftime("%s")) * 1000 
1312908481000

Oder mit Hilfe des Zeitmoduls (und ohne Datumsformatierung):

>>> import datetime, time
>>> # replace datetime.datetime.now() with your datetime object
>>> time.mktime(datetime.datetime.now().timetuple()) * 1000
1312908681000.0

Beantwortet mit Hilfe von: http://pleac.sourceforge.net/pleac_python/datesandtimes.html

Dokumentation:

18voto

working4coins Punkte 1897

Du kannst mit dem Delorean durch Raum und Zeit reisen!

import datetime
import delorean
dt = datetime.datetime.utcnow()
delorean.Delorean(dt, timezone="UTC").epoch

http://delorean.readthedocs.org/en/latest/quickstart.html

15voto

estani Punkte 20703

So mache ich es:

from datetime import datetime
from time import mktime

dt = datetime.now()
sec_since_epoch = mktime(dt.timetuple()) + dt.microsecond/1000000.0

millis_since_epoch = sec_since_epoch * 1000

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X