В Python, как преобразовать datetime.datetime
в тип float
, который я получил бы от функции time.time
?
Python: Преобразование из `datetime.datetime` в` time.time`
Ответ 1
Не сложно использовать метод тайм-кортежа и сохранить микросекунды:
>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2011, 11, 5, 11, 26, 15, 37496)
>>> time.mktime(t.timetuple()) + t.microsecond / 1E6
1320517575.037496
Ответ 2
time.mktime(dt_obj.timetuple())
Должен сделать трюк.
Ответ 3
Учитывая объект 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.
Ответ 4
Комбинация datetime.timetuple()
и time.mktime()
:
>>> import datetime
>>> import time
>>> now = datetime.datetime.now()
>>> secondsSinceEpoch = time.mktime(now.timetuple())
Ответ 5
Я знаю, что это старый вопрос, но в python 3.3+ теперь есть более простой способ сделать это, используя datetime.timestamp() метод:
from datetime import datetime
timestamp = datetime.now().timestamp()