Recibo una respuesta del resto es un formato de hora de época como
start_time = 1234566
end_time = 1234578
Quiero convertir esos segundos de época en tiempo de formato MySQL para poder almacenar las diferencias en mi base de datos MySQL.
Lo intenté:
>>> import time
>>> time.gmtime(123456)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=10, tm_min=17, tm_sec=36, tm_wday=4, tm_yday=2, tm_isdst=0)
El resultado anterior no es lo que estoy esperando. Quiero que sea como
2012-09-12 21:00:00
Por favor sugiera cómo puedo lograr esto?
Además, ¿por qué estoy TypeError: a float is required
buscando
>>> getbbb_class.end_time = 1347516459425
>>> mend = time.gmtime(getbbb_class.end_time).tm_hour
Traceback (most recent call last):
...
TypeError: a float is required
1347516459425
? Esta no es una época válida. Intentatime.gmtime(float(str(i)[:-6]+'.'+str(i)[-6:]))
dondei
está1347516459425
.Respuestas:
Para convertir su valor de tiempo (float o int) en una cadena con formato, use:
fuente
También puedes usar
datetime
:fuente
strftime()
admite más marcadores de posición de formato, particularmente% f para la porción de microsegundos de la hora. Por razones desconocidas,time.strftime()
no admite eso, aunque los microsegundos se pueden representar en el valor flotante al que se ingresatime.localtime()
.Para obtener UTC:
fuente
Esto es lo que necesitas
Ingrese un en
float
lugar de unint
y ese otroTypeError
debería desaparecer.fuente
Prueba esto:
También en MySQL, puede
FROM_UNIXTIME
gustar:Para su segunda pregunta, probablemente sea porque
getbbb_class.end_time
es una cadena. Puede convertirlo a numérico como:float(getbbb_class.end_time)
fuente
Esto es un poco más prolijo, pero proviene del comando date en unix.
fuente
Primero un poco de información en época de man gmtime
para entender cómo debería ser la época.
solo asegúrate de que el argumento al que estás pasando
time.gmtime()
sea entero.fuente