Rád to aktualizuji, pokud tomu dobře nerozumím, ale zde je několik příkladů, které mohou pomoci. Všimněte si, že toto používá datetime
modul namísto time
.
>>> import datetime
Zde nastavíme příklad časového razítka ts
a formát f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Podobně jako to, co jste udělali výše, používáme strptime
funkce (z datetime.datetime
), abyste převedli náš řetězec na datetime
objekt založený na parametru formátování:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Nyní obráceně – zde používáme datetime.datetime.now()
získat aktuální čas jako datetime
objekt:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
V datetime
případě strftime
metoda je ve skutečnosti volána v datetime
samotný objekt s parametrem formátování jako argument:
>>> now.strftime(f)
'2013-01-12 00:46:54'
Ve vaší situaci je důvod, proč se vám zobrazila chyba, protože time.time()
vrátí float:
>>> time.time()
1357980846.290231
Ale time.strftime
potřebuje time
tuple, podobný tomu, co jste měli výše. Aniž byste se dostali do šílené spirály, kterou je čas, funkce jako time.localtime()
vrátí výše zmíněný time
n-tice a vrátí se, jak očekáváte:
>>> 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'