web-dev-qa-db-fra.com

Python: conversion de `datetime.datetime` en` time.time`

En Python, comment convertir un datetime.datetime dans le type de float que j'obtiendrais du time.time une fonction?

48
Ram Rachum

Il n'est pas difficile d'utiliser la méthode du Tuple temporel tout en conservant les microsecondes:

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

>>> time.mktime(t.timetuple()) + t.microsecond / 1E6
1320517575.037496
42
time.mktime(dt_obj.timetuple())

Devrait faire l'affaire.

25
Amber

Étant donné un objet datetime.datetimedt, vous pouvez utiliser

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

Exemple:

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

Notez que la méthode timedelta.total_seconds() a été introduite dans Python 2.7.

10
Sven Marnach

Je sais que c'est une vieille question, mais dans python 3.3+ il y a maintenant un moyen plus facile de le faire en utilisant la méthode datetime.timestamp () :

from datetime import datetime
timestamp = datetime.now().timestamp()
8
lsowen

Une combinaison de datetime.timetuple() et time.mktime():

>>> import datetime
>>> import time
>>> now = datetime.datetime.now()
>>> secondsSinceEpoch = time.mktime(now.timetuple())
6
bgporter