Неполный ответ (не касается часовых поясов), но, надеюсь, полезный:
time.mktime(datetime_object.timetuple())
** Отредактировано на основании следующего комментария **
В моей программе пользователь вводит дату и время, выбирает часовой пояс. ... Я создал список часовых поясов (используйте pytz.all_timezones) и позволил пользователю выбрать один часовой пояс из этого списка.
Модуль Pytz обеспечивает необходимые преобразования. Например. если dt
является вашим datetime
объектом, и пользователь выбрал '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())
Аргумент is_dst=True
заключается в разрешении неоднозначных времен в течение 1-часовых интервалов в конце летнего времени (см. Здесь http://pytz.sourceforge.net/#problems-with-localtime).