Как получить секунды, начиная с эпохи, из времени + даты вывода gmtime ()? - PullRequest
143 голосов
/ 28 декабря 2010

Как сделать обратное gmtime(), где вы положили время + дату и получили количество секунд?

У меня есть строки типа 'Jul 9, 2009 @ 20:02:58 UTC', и я хочу вернуть количество секундмежду эпохой и 9 июля 2009 года.

Я пробовал time.strftime, но я не знаю, как правильно его использовать, или это правильная команда для использования.

Ответы [ 6 ]

539 голосов
/ 12 ноября 2012

Используйте модуль время :

epoch_time = int(time.time())
113 голосов
/ 28 декабря 2010

Вы хотите 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

Подробнее о модуле календаря здесь

10 голосов
/ 28 декабря 2010

Обратите внимание, что 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 голосов
/ 07 сентября 2017
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 не поддерживает високосные секунды.

4 голосов
/ 28 декабря 2010
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")
3 голосов
/ 28 декабря 2010

Существует два способа, в зависимости от вашей первоначальной отметки времени:

mktime() и timegm()

http://docs.python.org/library/time.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...