Dostaję odpowiedź od reszty to format czasu Epoki
start_time = 1234566
end_time = 1234578
Chcę przekonwertować tę epokę sekund na czas w formacie MySQL, aby móc przechowywać różnice w mojej bazie danych MySQL.
Próbowałem:
>>> 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)
Powyższy wynik nie jest tym, czego oczekuję. Chcę, żeby tak było
2012-09-12 21:00:00
Proszę zasugerować, jak mogę to osiągnąć?
Ponadto, dlaczego ja dostaję TypeError: a float is required
za
>>> 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
? To nie jest ważna epoka. Spróbujtime.gmtime(float(str(i)[:-6]+'.'+str(i)[-6:]))
gdziei
jest1347516459425
.Odpowiedzi:
Aby przekonwertować wartość czasu (zmiennoprzecinkową lub całkowitą) na sformatowany ciąg, użyj:
źródło
Możesz także użyć
datetime
:źródło
strftime()
obsługuje większą liczbę symboli zastępczych formatowania, szczególnie% f dla części czasu w mikrosekundach. Z nieznanych przyczyntime.strftime()
nie obsługuje tego, chociaż mikrosekundy mogą być reprezentowane przez wartość zmiennoprzecinkową, która jest wprowadzanatime.localtime()
.Aby uzyskać UTC:
źródło
Właśnie tego potrzebujesz
Proszę wpisać
float
zamiast,int
a ten drugiTypeError
powinien zniknąć.źródło
Spróbuj tego:
Również w MySQL możesz
FROM_UNIXTIME
polubić:W przypadku drugiego pytania jest to prawdopodobnie spowodowane
getbbb_class.end_time
ciągiem znaków. Możesz przekonwertować go na numeryczne, takie jak:float(getbbb_class.end_time)
źródło
Jest to trochę bardziej niewygodne, ale pochodzi z polecenia date w unixie.
źródło
Najpierw trochę informacji w epoce od man gmtime
zrozumieć, jaka powinna być epoka.
upewnij się tylko, że argument, który przekazujesz,
time.gmtime()
jest liczbą całkowitą.źródło