Python: преобразование из `datetime.datetime` в` time.time` - PullRequest
47 голосов
/ 05 ноября 2011

Как в Python преобразовать datetime.datetime в тип float, который я получу из функции time.time?

Ответы [ 5 ]

43 голосов
/ 05 ноября 2011

Нетрудно использовать метод кортежа времени и сохранять микросекунды:

>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2011, 11, 5, 11, 26, 15, 37496)

>>> time.mktime(t.timetuple()) + t.microsecond / 1E6
1320517575.037496
23 голосов
/ 05 ноября 2011
time.mktime(dt_obj.timetuple())

Должен сделать свое дело.

10 голосов
/ 05 ноября 2011

Учитывая datetime.datetime объект dt, вы можете использовать

(dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()

Пример:

>>> dt = datetime.datetime.now(); t = time.time()
>>> t
1320516581.727343
>>> (dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()
1320516581.727296

Обратите внимание, что метод timedelta.total_seconds() был представлен в Python 2.7.

7 голосов
/ 06 февраля 2016

Я знаю, что это старый вопрос, но в python 3.3+ теперь есть более простой способ сделать это, используя метод datetime.timestamp () :

from datetime import datetime
timestamp = datetime.now().timestamp()
6 голосов
/ 05 ноября 2011

Сочетание datetime.timetuple() и time.mktime():

>>> import datetime
>>> import time
>>> now = datetime.datetime.now()
>>> secondsSinceEpoch = time.mktime(now.timetuple())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...