Ще се радвам да актуализирам това, ако не разбирам правилно, но ето няколко примера, които могат да помогнат. Имайте предвид, че това използва datetime
модул вместо time
.
>>> import datetime
Тук настройваме примерна времева марка ts
и формат f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Подобно на това, което направихте по-горе, ние използваме strptime
функция (от datetime.datetime
), за да преобразуваме нашия низ в datetime
обект въз основа на параметъра за форматиране:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Сега наобратно - тук използваме datetime.datetime.now()
за да получите текущото време като datetime
обект:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
В datetime
случай, strftime
методът всъщност се извиква на datetime
самия обект, с параметъра за форматиране като аргумент:
>>> now.strftime(f)
'2013-01-12 00:46:54'
Във вашата ситуация причината да получавате грешка е, че time.time()
връща float:
>>> time.time()
1357980846.290231
Но time.strftime
се нуждае от time
кортеж, подобен на това, което имахте по-горе. Без да навлизаме в влудяващата спирала, която е времето, функция като time.localtime()
ще върне гореспоменатия time
кортеж и ще се върне, както очаквате:
>>> 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'