Please help me to change datetime object (for example: 2011-12-17 11:31:00-05:00) (including timezone) to Unix timestamp (like function time.time() in Python).
-
Possibly a duplicate of stackoverflow.com/questions/2775864/…Felix Yan– Felix Yan2011-12-18 04:08:32 +00:00Commented Dec 18, 2011 at 4:08
-
related: Converting datetime.date to UTC timestamp in Pythonjfs– jfs2013-05-26 01:40:24 +00:00Commented May 26, 2013 at 1:40
3 Answers
Another way is:
import calendar
from datetime import datetime
d = datetime.utcnow()
timestamp=calendar.timegm(d.utctimetuple())
Timestamp is the unix timestamp which shows the same date with datetime object d.
1 Comment
(d - datetime(1970,1,1)).total_seconds()import time
import datetime
dtime = datetime.datetime.now()
ans_time = time.mktime(dtime.timetuple())
1 Comment
timetuple() sets tm_isdst to -1 that forces mktime() to guess i.e., there is 50% chance it gets it wrong. Either use utc time or aware datetime objects.Incomplete answer (doesn't deal with timezones), but hopefully useful:
time.mktime(datetime_object.timetuple())
** Edited based on the following comment **
In my program, user enter datetime, select timezone. ... I created a timezone list (use pytz.all_timezones) and allow user to chose one timezone from that list.
Pytz module provides the necessary conversions. E.g. if dt is your datetime object, and user selected 'US/Eastern'
import pytz, calendar
tz = pytz.timezone('US/Eastern')
utc_dt = tz.localize(dt, is_dst=True).astimezone(pytz.utc)
print calendar.timegm(utc_dt.timetuple())
The argument is_dst=True is to resolve ambiguous times during the 1-hour intervals at the end of daylight savings (see here http://pytz.sourceforge.net/#problems-with-localtime).