webentwicklung-frage-antwort-db.com.de

Wie erhalte ich die Sekunden seit Epoche aus der Zeit + Datum-Ausgabe von gmtime ()?

Wie können Sie gmtime() umkehren, wobei Sie die Zeit + das Datum eingeben und die Anzahl der Sekunden ermitteln?

Ich habe Zeichenfolgen wie 'Jul 9, 2009 @ 20:02:58 UTC', und ich möchte die Anzahl der Sekunden zwischen der Epoche und dem 9. Juli 2009 zurückgeben.

Ich habe versucht time.strftime aber ich weiß nicht, wie ich es richtig verwenden soll oder ob es der richtige Befehl ist.

144
calccrypto

Sie möchten calendar.timegm().

>>> calendar.timegm(time.gmtime())
1293581619.0

Sie können Ihren String mit time.strptime() in ein Zeit-Tupel verwandeln, das ein Zeit-Tupel zurückgibt, das Sie an calendar.timegm() übergeben können:

>>> import calendar
>>> import time
>>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC'))
1247169778

Weitere Informationen zum Kalendermodul hier

114
nmichaels

Verwenden Sie das Zeit Modul:

Epoch_time = int(time.time())
549
naren

Beachten Sie, dass time.gmtime Den Zeitstempel 01970-1-1 00:00:00 Zuordnet.

In [61]: import time       
In [63]: time.gmtime(0)
Out[63]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

time.mktime(time.gmtime(0)) gibt Ihnen einen Zeitstempel, der um einen Betrag verschoben ist, der von Ihrem Gebietsschema abhängt. Dieser Wert darf im Allgemeinen nicht 0 sein.

In [64]: time.mktime(time.gmtime(0))
Out[64]: 18000.0

Die Umkehrung von time.gmtime Ist calendar.timegm:

In [62]: import calendar    
In [65]: calendar.timegm(time.gmtime(0))
Out[65]: 0
10
unutbu
ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()

Dies sollte sich von int(time.time()) unterscheiden, aber es ist ungefährlich, etwas wie x % (60*60*24) zu verwenden.

datetime - Grundlegende Datums- und Zeittypen:

Im Gegensatz zum Zeitmodul unterstützt das Datum/Uhrzeit-Modul keine Schaltsekunden.

5
user3226167
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")
4
Falmarri

Abhängig von Ihrem ursprünglichen Zeitstempel gibt es zwei Möglichkeiten:

mktime() und timegm()

http://docs.python.org/library/time.html

3
Evan Mulawski