Преобразование даты и времени в время POSIX - PullRequest
45 голосов
/ 01 ноября 2008

Как мне преобразовать объект datetime или date в метку времени POSIX в python? Существуют методы для создания объекта datetime из метки времени, но я не вижу очевидных способов сделать операцию противоположным способом.

Ответы [ 4 ]

53 голосов
/ 01 ноября 2008
import time, datetime

d = datetime.datetime.now()
print time.mktime(d.timetuple())
21 голосов
/ 03 мая 2011

Для вычислений UTC calendar.timegm является обратным time.gmtime.

import calendar, datetime
d = datetime.datetime.utcnow()
print calendar.timegm(d.timetuple())
7 голосов
/ 30 октября 2017

Обратите внимание, что Python теперь (3.5.2) включает в себя встроенный метод для этого в datetime объектах:

>>> import datetime
>>> now = datetime.datetime.now() 
>>> now.timestamp() # Local time
1509315202.161655
>>> now.replace(tzinfo=datetime.timezone.utc).timestamp() # UTC
1509329602.161655
4 голосов
/ 17 января 2013

В python time.time () может возвращать секунды как число с плавающей запятой, которое включает десятичный компонент с микросекундами. Чтобы преобразовать дату и время обратно в это представление, вы должны добавить компонент микросекунд, потому что прямой набор времени не включает его.

import time, datetime

posix_now = time.time()

d = datetime.datetime.fromtimestamp(posix_now)
no_microseconds_time = time.mktime(d.timetuple())
has_microseconds_time = time.mktime(d.timetuple()) + d.microsecond * 0.000001

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