Thelinh Truong
Thelinh Truong

Reputation: 574

Change datetime to Unix time stamp in Python

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

Upvotes: 22

Views: 52895

Answers (3)

Shnkc
Shnkc

Reputation: 2158

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.

Upvotes: 14

user2673780
user2673780

Reputation: 131

import time

import datetime

dtime = datetime.datetime.now()

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

Upvotes: 13

DS.
DS.

Reputation: 24110

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

Upvotes: 6

Related Questions