In Python, how do I convert a datetime.datetime
into the kind of float
that I would get from the time.time
function?
time.mktime(dt_obj.timetuple())
Should do the trick.
I know this is an old question, but in python 3.3+ there is now an easier way to do this using the datetime.timestamp() method:
from datetime import datetime
timestamp = datetime.now().timestamp()
Given a datetime.datetime
object dt
, you could use
(dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()
Example:
>>> dt = datetime.datetime.now(); t = time.time()
>>> t
1320516581.727343
>>> (dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()
1320516581.727296
Note that the timedelta.total_seconds()
method was introduced in Python 2.7.
It's not hard to use the time tuple method and still retain the microseconds:
>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2011, 11, 5, 11, 26, 15, 37496)
>>> time.mktime(t.timetuple()) + t.microsecond / 1E6
1320517575.037496
A combination of datetime.timetuple()
and time.mktime()
:
>>> import datetime
>>> import time
>>> now = datetime.datetime.now()
>>> secondsSinceEpoch = time.mktime(now.timetuple())