python: конвертировать год / месяц / день / час / мин / секунду в # секунды с 1 января 1970 года - PullRequest
4 голосов
/ 13 декабря 2011

Я знаю, как это сделать на C и Java, но я не знаю быстрого способа преобразования года / месяца / дня / часа / минуты / секунды в число секунд с 1 января 1970 года.

Может ли кто-нибудь мне помочь?

До сих пор я выяснил, как создать datetime объект , но я не могу получить истекшие # секунды с моментаэпоха.

(редактировать: мой вопрос противоположен этому другому: Python: секунды с начала эпохи до относительной даты )

Ответы [ 5 ]

9 голосов
/ 13 декабря 2011

Используйте метод timetuple или utctimetuple, чтобы получить кортеж времени и преобразовать его в метку времени, используя time.mktime

>>> import datetime
>>> dt = datetime.datetime(2011, 12, 13, 10, 23)
>>> import time
>>> time.mktime(dt.timetuple())
1323793380.0

С этим связана хорошая ошибка http://bugs.python.org/issue2736, это интересное чтение, и любой, кто пытается преобразовать его в метку времени, должен прочитать это. В соответствии с этим потоком правильный путь

timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
3 голосов
/ 13 декабря 2011

Вы можете использовать datetime.datetime(1970, 1, 1) в качестве ссылки и получить общее количество секунд от объекта datetime.timedelta следующим образом:

from datetime import datetime

delta = your_date - datetime(1970, 1, 1)
delta.total_seconds()
2 голосов
/ 13 декабря 2011
import calendar

calendar.timegm(datetime_object.utctimetuple())
0 голосов
/ 20 августа 2014

Чтобы преобразовать объект даты и времени (время простоя: год / месяц / день / час / мин / секунда) в секунд с начала эпохи (время POSIX) :

seconds_since_epoch = datetime_object.timestamp()

Примечание: POSIX Epoch: «00:00:00 GMT, 1 января 1970 года» .

Если datetime_object не имеет информации о часовом поясе, тогда метод .timestamp() использует местный часовой пояс.

datetime.timestamp() метод введен в Python 3.3;код, который работает в более старых версиях Python, см. Преобразование datetime.date в метку времени UTC в Python .

0 голосов
/ 17 июля 2012

Эти строки могут возвращать число с плавающей точкой, представляющее секунды с начала эпохи.

import time

time.time()
...