Estou recebendo uma resposta do resto. É um formato de época da época, como
start_time = 1234566
end_time = 1234578
Eu quero converter os segundos da época no formato MySQL para que eu possa armazenar as diferenças no meu banco de dados MySQL.
Eu tentei:
>>> 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)
O resultado acima não é o que estou esperando. Eu quero que seja assim
2012-09-12 21:00:00
Por favor, sugira como posso conseguir isso?
Além disso, por que estou recebendo TypeError: a float is required
para
>>> 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 não é uma época válida. Tentetime.gmtime(float(str(i)[:-6]+'.'+str(i)[-6:]))
ondei
está1347516459425
.Respostas:
Para converter seu valor de tempo (float ou int) em uma string formatada, use:
fonte
Você também pode usar
datetime
:fonte
strftime()
suporta mais espaços reservados de formatação, particularmente% f para a partição de microssegundos da hora. Por razões desconhecidas,time.strftime()
não suporta isso, embora os microssegundos possam ser representados no valor flutuante que é inseridotime.localtime()
.Para obter o UTC:
fonte
Isto é o que você precisa
Por favor, insira um ao
float
invés de umint
e esse outroTypeError
deve desaparecer.fonte
Tente o seguinte:
Também no MySQL, você pode
FROM_UNIXTIME
gostar:Para sua segunda pergunta, provavelmente
getbbb_class.end_time
é porque é uma string. Você pode convertê-lo para numérico como:float(getbbb_class.end_time)
fonte
Isso é um pouco mais prolixo, mas vem do comando date no unix.
fonte
Primeiro um pouco de informação na época de man gmtime
para entender como a época deve ser.
apenas verifique se o argumento para o qual você está passando
time.gmtime()
é inteiro.fonte