How to get the seconds since epoch from the time + date output of gmtime()?
How do you do reverse
gmtime(), where you put the time + date and get the number of seconds?
I have strings like
'Jul 9, 2009 @ 20:02:58 UTC', and I want to get back the number of seconds between the epoch and July 9, 2009.
I have tried
time.strftime but I don't know how to use it properly, or if it is the correct command to use.
If you got here because a search engine told you this is how to get the Unix timestamp, stop reading this answer. Scroll down one.
If you want to reverse
time.gmtime(), you want
>>> calendar.timegm(time.gmtime()) 1293581619.0
You can turn your string into a time tuple with
time.strptime(), which returns a time tuple that you can pass to
>>> import calendar >>> import time >>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC')) 1247169778
More information about calendar module here
Read more... Read less...
time.gmtime maps timestamp
In : import time In : time.gmtime(0) Out: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time.mktime(time.gmtime(0)) gives you a timestamp shifted by an amount that depends on your locale, which in general may not be 0.
In : time.mktime(time.gmtime(0)) Out: 18000.0
The inverse of
In : import calendar In : calendar.timegm(time.gmtime(0)) Out: 0
ep = datetime.datetime(1970,1,1,0,0,0) x = (datetime.datetime.utcnow()- ep).total_seconds()
This should be different from
int(time.time()), but it is safe to use something like
x % (60*60*24)
Unlike the time module, the datetime module does not support leap seconds.
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")