Ответ 1
Счастлив обновить это, если я не понимаю, но вот несколько примеров, которые могут помочь. Обратите внимание, что вместо time
используется модуль datetime
.
>>> import datetime
Здесь мы устанавливаем пример timestamp 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'