Как получить секунды, начиная с эпохи, из времени + даты вывода gmtime()?
Как вы делаете обратное gmtime()
, где вы помещаете время + дату и получаете количество секунд?
У меня есть строки вроде 'Jul 9, 2009 @ 20:02:58 UTC'
, и я хочу вернуть количество секунд между эпохой и 9 июля 2009 года.
Я пробовал time.strftime
, но я не знаю, как правильно его использовать или если это правильная команда для использования.
Ответы
Ответ 1
Если вы пришли сюда, потому что Google сказал вам, как получить метку времени Unix, прекратите читать этот ответ. Прокрутите вниз один.
Если вы хотите изменить time.gmtime()
, вы хотите calendar.timegm()
.
>>> calendar.timegm(time.gmtime())
1293581619.0
Вы можете превратить вашу строку в кортеж времени с помощью time.strptime()
, который возвращает кортеж времени, который вы можете передать calendar.timegm()
:
>>> import calendar
>>> import time
>>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC'))
1247169778
Подробнее о модуле календаря здесь
Ответ 2
Используйте модуль time :
epoch_time = int(time.time())
Ответ 3
Обратите внимание, что time.gmtime
отображает временную метку 0
на 1970-1-1 00:00:00
.
In [61]: import time
In [63]: time.gmtime(0)
Out[63]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time.mktime(time.gmtime(0))
дает вам временную метку, сдвинутую на величину, зависящую от вашей локали, которая обычно не может быть 0.
In [64]: time.mktime(time.gmtime(0))
Out[64]: 18000.0
Обратный к time.gmtime
равен calendar.timegm
:
In [62]: import calendar
In [65]: calendar.timegm(time.gmtime(0))
Out[65]: 0
Ответ 4
ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()
Это должно отличаться от int(time.time())
, но безопасно использовать что-то вроде x % (60*60*24)
datetime - основные типы даты и времени:
В отличие от модуля времени, модуль datetime не поддерживает високосные секунды.
Ответ 5
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")
Ответ 6
В зависимости от вашей исходной метки времени существует два способа:
mktime()
и timegm()
http://docs.python.org/library/time.html