Feliz de actualizar esto si no lo entiendo correctamente, pero aquí hay algunos ejemplos que pueden ayudar. Tenga en cuenta que esto usa el datetime
módulo en lugar de time
.
>>> import datetime
Aquí configuramos una marca de tiempo de ejemplo ts
y un formato f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Similar a lo que hiciste anteriormente, usamos el strptime
función (de datetime.datetime
) para convertir nuestra cadena en un datetime
objeto basado en el parámetro de formato:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Ahora al revés:aquí usamos datetime.datetime.now()
para obtener la hora actual como datetime
objeto:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
En el datetime
caso, el strftime
el método en realidad se llama en el datetime
objeto en sí, con el parámetro de formato como argumento:
>>> now.strftime(f)
'2013-01-12 00:46:54'
En su situación, la razón por la que estaba recibiendo un error es porque time.time()
devuelve un flotante:
>>> time.time()
1357980846.290231
Pero time.strftime
necesita un time
tupla, similar a lo que tenía arriba. Sin entrar en la espiral enloquecedora que es el tiempo, una función como time.localtime()
devolverá el time
antes mencionado tupla y regresará como espera:
>>> 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'