Jak odwrócić gmtime()
, gdzie umieszczasz czas + datę i uzyskujesz liczbę sekund?
Mam ciągi znaków jak 'Jul 9, 2009 @ 20:02:58 UTC'
i chcę odzyskać liczbę sekund między epoką a 9 lipca 2009 r.
Próbowałem, time.strftime
ale nie wiem, jak go poprawnie używać lub czy jest to właściwe polecenie.
Skorzystaj z modułu czasu :
źródło
time
używa się epoki uniksowej (1970).time.time()
wartość nie zależy od lokalnej strefy czasowej (jeśli wykluczymy „prawo” strefy czasowe i tym podobne), na przykład, jeśli zwróci czas POSIX (jak ma to miejsce w większości systemów), jest to liczba sekund SI od Epoka (1970-01-01UTC) nie licząc sekund przestępnych. Wartość tę można przeliczyć na UTC (z wyłączeniem sekund przestępnych), ale nie jest to UTC . @MarlonAbeykoon: Podoba mi się ta odpowiedźZauważ, że
time.gmtime
mapuje znacznik czasu0
do1970-1-1 00:00:00
.time.mktime(time.gmtime(0))
podaje sygnaturę czasową przesuniętą o kwotę zależną od ustawień regionalnych, która generalnie nie może wynosić 0.Odwrotnością
time.gmtime
jestcalendar.timegm
:źródło
mktime()
zgmtime()
.mktime()
akceptuje Twój czas lokalny, alegmtime()
zwraca czas UTC - Twoja lokalna strefa czasowa może i prawdopodobnie będzie inna. "Znacznik czasu w stosunku do twojego locale" nie ma sensu: POSIX timestamp nie zależy od twojego locale (lokalna strefa czasowa) - ma tę samą wartość na całym świecie. „Sekundy od epoki” to w większości przypadków sygnatura czasowa POSIX (nawet w systemie Windows) - takie rzeczy jak „właściwe” strefy czasowe używające skali czasu TAI nie są powszechne. Zobacz Czy time.time () języka Python zwraca lokalny lub UTC znacznik czasu?mktime()
ostatnio mam kilka problemów . W przypadku niektórych serwerów WWW w Pythonie (na przykład Tornado), ponieważ proces działa, nawet jeśli zmienię ustawienia regionalne systemu,mktime()
wywoływany przez serwer sieciowy interfejs API nadal korzysta ze starej strefy czasowej do generowania obiektu czasu. Muszę przełączyć się nagmtime()
i ręcznie zastosować przesunięcie gmt.Powinno się to różnić od
int(time.time())
, ale można bezpiecznie użyć czegoś takiego jakx % (60*60*24)
datetime - Podstawowe typy daty i czasu:
źródło
źródło
from datetime import datetime
albo zrobićdatetime.datetime.strptime
W zależności od oryginalnej sygnatury czasowej istnieją dwa sposoby:
mktime()
itimegm()
http://docs.python.org/library/time.html
źródło