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.

15voto

Ankur Agarwal Punkte 21564

11voto

corford Punkte 925
from datetime import datetime
from calendar import timegm

# Note: if you pass in a naive dttm object it's assumed to already be in UTC
def unix_time(dttm=None):
    if dttm is None:
       dttm = datetime.utcnow()

    return timegm(dttm.utctimetuple())

print "Unix time now: %d" % unix_time()
print "Unix timestamp from an existing dttm: %d" % unix_time(datetime(2014, 12, 30, 12, 0))

4voto

arhoskins Punkte 362

Hier ist eine andere Form einer Lösung mit Normalisierung Ihres Zeitobjekts:

def to_unix_time(timestamp):
    epoch = datetime.datetime.utcfromtimestamp(0) # start of epoch time
    my_time = datetime.datetime.strptime(timestamp, "%Y/%m/%d %H:%M:%S.%f") # plugin your time object
    delta = my_time - epoch
    return delta.total_seconds() * 1000.0

3voto

Jinesh Punkte 2447
>>> import datetime
>>> import time
>>> import calendar

>>> #your datetime object
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 3, 19, 13, 0, 9, 351812)

>>> #use datetime module's timetuple method to get a `time.struct_time` object.[1]
>>> tt = datetime.datetime.timetuple(now)
>>> tt
time.struct_time(tm_year=2013, tm_mon=3, tm_mday=19, tm_hour=13, tm_min=0, tm_sec=9,     tm_wday=1, tm_yday=78, tm_isdst=-1)

>>> #If your datetime object is in utc you do this way. [2](see the first table on docs)
>>> sec_epoch_utc = calendar.timegm(tt) * 1000
>>> sec_epoch_utc
1363698009

>>> #If your datetime object is in local timeformat you do this way
>>> sec_epoch_loc = time.mktime(tt) * 1000
>>> sec_epoch_loc
1363678209.0

[1] http://docs.python.org/2/library/datetime.html#datetime.date.timetuple

[2] http://docs.python.org/2/library/time.html

3voto

volhv Punkte 1087

Ein bisschen Pandas-Code:

import pandas

def to_millis(dt):
    return int(pandas.to_datetime(dt).value / 1000000)

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