Gerne aktualisiere ich dies, wenn ich es nicht richtig verstehe, aber hier sind ein paar Beispiele, die helfen können. Beachten Sie, dass dies die datetime
verwendet Modul anstelle von time
.
>>> import datetime
Hier richten wir einen Beispielzeitstempel ts
ein und ein Format f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Ähnlich wie oben verwenden wir die strptime
Funktion (von datetime.datetime
), um unseren String in ein datetime
umzuwandeln Objekt basierend auf dem Formatierungsparameter:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Jetzt umgekehrt – hier verwenden wir datetime.datetime.now()
um die aktuelle Uhrzeit als datetime
zu erhalten Objekt:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
In der datetime
Fall die strftime
-Methode wird tatsächlich am datetime
aufgerufen Objekt selbst, mit dem Formatierungsparameter als Argument:
>>> now.strftime(f)
'2013-01-12 00:46:54'
In Ihrer Situation ist der Grund, warum Sie einen Fehler erhalten haben, time.time()
gibt einen Float zurück:
>>> time.time()
1357980846.290231
Aber time.strftime
braucht eine time
Tupel, ähnlich wie oben. Ohne in die wahnsinnige Zeitspirale zu geraten, eine Funktion wie time.localtime()
gibt die oben genannte time
zurück Tupel und wird wie erwartet zurückgegeben:
>>> now = time.localtime()
>>> now
time.struct_time(tm_year=2013, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=55, tm_sec=55, tm_wday=5, tm_yday=12, tm_isdst=0)
>>> f = '%Y-%m-%d %H:%M:%S'
>>> time.strftime(f, now)
'2013-01-12 00:55:55'