22

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).

2

3 Answers 3

14

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.

Sign up to request clarification or add additional context in comments.

1 Comment

note: it removes fractions of a second. To preserve microseconds, use: (d - datetime(1970,1,1)).total_seconds()
13
import time

import datetime

dtime = datetime.datetime.now()

ans_time = time.mktime(dtime.timetuple())

1 Comment

Local time may be ambiguous e.g., during end-of-DST transitions ("fall back"). 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.
6

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).

3 Comments

I realy need to deal with timezones.
Does the input datetime object contain a proper tzinfo? Or, if not, how do you know which timezone you are interested in?
yes. In my program, user enter datetime, select timezone. I use python language, I created a timezone list ( use pytz.all_timezones ) and allow user to chose one timezone from that list. My problem is how to convert the datetime along with timezone id to unix timestamp. All above answer donot solve my problem. Please help me.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.