Jeg vil gerne opdatere dette, hvis jeg ikke forstår det rigtigt, men her er et par eksempler, der kan hjælpe. Bemærk, at dette bruger datetime
modul i stedet for time
.
>>> import datetime
Her opsætter vi et eksempel på et tidsstempel ts
og et format f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
I lighed med det, du gjorde ovenfor, bruger vi strptime
funktion (fra datetime.datetime
) for at konvertere vores streng til en datetime
objekt baseret på formateringsparameteren:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Nu omvendt - her bruger vi datetime.datetime.now()
for at få det aktuelle klokkeslæt som en datetime
objekt:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
I datetime
case, strftime
metode kaldes faktisk på datetime
selve objektet med formateringsparameteren som argument:
>>> now.strftime(f)
'2013-01-12 00:46:54'
I din situation er grunden til, at du fik en fejl, fordi time.time()
returnerer en float:
>>> time.time()
1357980846.290231
Men time.strftime
har brug for en time
tuple, svarende til det du havde ovenfor. Uden at komme ind i den vanvittige spiral, det vil sige tid, er en funktion såsom time.localtime()
vil returnere den førnævnte time
tuple og vil vende tilbage, som du forventer:
>>> 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'