2013-10-10 5 views
2

Я ищу эквивалент python GNU date(1) вариант. В основном я хочу преобразовать дату в секундах, как в примере ниже, я попытался посмотреть из документов python, но не смог найти эквивалентный модуль времени.Преобразование даты в секунды

$ convdate="Jul 1 12:00:00 2015 GMT" 

$ date '+%s' --date "$convdate" 

1435752000 

От GNU date(1) человек страница

-d, --date=STRING 
       display time described by STRING, not 'now' 
+0

гляньте в [Преобразование формата даты и времени в секунды] (http://stackoverflow.com/q/18269888/1730674) – askewchan

ответ

4

Насколько я понимаю, UNIX представляет даты, как смещение от 1 января 1970 года, поэтому для того, чтобы сделать это в Python вы могли бы получить дельта времени. В частности, для примера:

from datetime import datetime 
a = datetime.strptime(convdate, "%b %d %H:%M:%S %Y %Z") 
b = datetime(1970, 1, 1) 
(a-b).total_seconds() 

Выход

1435752000,0

1

Конверсия вам пытаются это называется "секунд с эпохи" и рассчитывается с использованием функции, как это:

def unix_time(dt): 
    epoch = datetime.datetime.utcfromtimestamp(0) 
    delta = dt - epoch 
    return delta.total_seconds() 

You может загружать дату-время непосредственно с каждой частью даты или загружать ее из строки и вычислять количество секунд:

>>> def unix_time(dt): 
...  epoch = datetime.datetime.utcfromtimestamp(0) 
...  delta = dt - epoch 
...  return delta.total_seconds() 
... 
>>> import datetime 
>>> a = datetime.datetime(2015, 07, 01, 12, 00, 00) 
>>> print a 
2015-07-01 12:00:00 
>>> print unix_time(a) 
1435752000.0 
>>> 

Примечание: вы можете использовать длинный (unix_time (а)), если вы хотите избавиться от последнего .0

Надеются, что это помогает!

2
>>> x = datetime.strptime('Jul 1 12:00:00 2015 GMT', '%b %d %H:%M:%S %Y %Z') 
>>> x.timestamp() 
1435744800.0 

Обратите внимание, что это локальная метка времени. Мой часовой пояс UTC + 2, следовательно, это на 2 часа меньше, чем вы ожидаете. Если вы хотите UTC на основе метки времени, вы можете сделать это:

>>> from datetime import timezone 
>>> x.replace(tzinfo=timezone.utc).timestamp() 
1435752000.0 
1

mktime может быть использована для расчета введенного времени в сек:

>>> import time 
>>> m = time.localtime()#store it in a var 
>>> time.mktime(m) 
o/p: 1435657461.0 
+0

комментарии обновлены. – Sanyal

Смежные вопросы