python: convert year/month/day/hour/min/second to # seconds since Jan 1 1970
Solution 1
Use timetuple
or utctimetuple
method to get time tuple and convert it to timestamp using time.mktime
>>> import datetime
>>> dt = datetime.datetime(2011, 12, 13, 10, 23)
>>> import time
>>> time.mktime(dt.timetuple())
1323793380.0
There is a nice bug related to it http://bugs.python.org/issue2736, this is interesting read and anybody trying to convert to timestamp should read this. According to that thread correct way is
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
Solution 2
You can use datetime.datetime(1970, 1, 1)
as a reference and get the total amount of seconds from a datetime.timedelta
object as follows:
from datetime import datetime
delta = your_date - datetime(1970, 1, 1)
delta.total_seconds()
Solution 3
import calendar
calendar.timegm(datetime_object.utctimetuple())
Solution 4
These lines can return a float number representing seconds since epoch.
import time
time.time()
Solution 5
To convert a datetime object (broken-downtime time: year/month/day/hour/min/second) to seconds since the Epoch (POSIX time):
seconds_since_epoch = datetime_object.timestamp()
Note: POSIX Epoch is "00:00:00 GMT, January 1, 1970".
If datetime_object
has no timezone info then .timestamp()
method uses a local timezone.
datetime.timestamp()
method is introduced in Python 3.3; for code that works on older Python versions, see Converting datetime.date to UTC timestamp in Python.
Jason S
Updated on July 07, 2022Comments
-
Jason S almost 2 years
I know how to do it in C and Java, but I don't know a quick way of converting year/month/day/hour/min/second to the # of seconds since the Jan 1 1970 epoch.
Can someone help me?
So far I've figured out how to create a
datetime
object but I can't seem to get the elapsed # seconds since the epoch.(edit: my question is the inverse of this other one: Python: Seconds since epoch to relative date)
-
jfs over 9 years
mktime()
works only ifdt
is a local time. "correct way" works only ifdt
is a naive datetime object that represents time in UTC (it is wrong ifdt
is a local time). See Converting datetime.date to UTC timestamp in Python. -
jfs over 9 years
utctimetuple()
fails silently ifdatetime_object
has no timezone info attached unlessdatetime_object
is already represents UTC time. -
jfs over 9 yearsit assumes that
your_date
is UTC date.