Jag uppdaterar gärna detta om jag inte förstår mig riktigt, men här är några exempel som kan hjälpa. Observera att detta använder datetime
modul istället för time
.
>>> import datetime
Här sätter vi upp ett exempel på tidsstämpel ts
och formatet f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
I likhet med vad du gjorde ovan använder vi strptime
funktion (från datetime.datetime
) för att konvertera vår sträng till en datetime
objekt baserat på formateringsparametern:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Nu omvänt - här använder vi datetime.datetime.now()
för att få aktuell tid som en datetime
objekt:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
I datetime
case, strftime
metoden anropas faktiskt på datetime
objektet självt, med formateringsparametern som argument:
>>> now.strftime(f)
'2013-01-12 00:46:54'
I din situation är anledningen till att du fick ett fel att time.time()
returnerar en flytande:
>>> time.time()
1357980846.290231
Men time.strftime
behöver en time
tupel, liknande det du hade ovan. Utan att komma in i den irriterande spiralen som är tid, en funktion som time.localtime()
returnerar ovannämnda time
tuple och kommer tillbaka som du förväntar dig:
>>> 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'