Z przyjemnością aktualizuję to, jeśli właściwie nie rozumiem, ale oto kilka przykładów, które mogą pomóc. Zauważ, że używa to datetime
moduł zamiast time
.
>>> import datetime
Tutaj ustawiamy przykładowy znacznik czasu ts
i format f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Podobnie do tego, co zrobiłeś powyżej, używamy strptime
funkcja (z datetime.datetime
), aby przekonwertować nasz ciąg na datetime
obiekt na podstawie parametru formatowania:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Teraz na odwrót - tutaj używamy datetime.datetime.now()
aby uzyskać aktualny czas jako datetime
obiekt:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
W datetime
przypadku, strftime
metoda jest faktycznie wywoływana w datetime
sam obiekt, z parametrem formatowania jako argumentem:
>>> now.strftime(f)
'2013-01-12 00:46:54'
W Twojej sytuacji przyczyną błędu jest to, że time.time()
zwraca liczbę zmiennoprzecinkową:
>>> time.time()
1357980846.290231
Ale time.strftime
potrzebuje time
krotka, podobna do tej, którą miałeś powyżej. Bez wchodzenia w szaloną spiralę, jaką jest czas, funkcja taka jak time.localtime()
zwróci wspomniany time
krotka i wróci zgodnie z oczekiwaniami:
>>> 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'