converting a timezone-less datetime to seconds since the epoch

Chris Withers chris at simplistix.co.uk
Wed Apr 7 04:57:10 EDT 2010


Hi Chris,

Chris Rebert wrote:
> from calendar import timegm
> 
> def timestamp(dttm):
>     return timegm(dttm.utctimetuple())
> #the *utc*timetuple change is just for extra consistency
> #it shouldn't actually make a difference here
> 
> And problem solved. As for what the problem was:
> 
> Paraphrasing the table I got added to the time module docs:
> (http://docs.python.org/library/time.html)

That table is not obvious :-/
Could likely do with its own section...

> To convert from struct_time in ***UTC***
> to seconds since the epoch
> use calendar.timegm()

...and really, wtf is timegm doing in calendar rather than in time? ;-)

>> I'd be *more* interested in knowing either why the timestamp function or the
>> tests are wrong and how to correct them...
> 
> You used a function intended for local times on UTC time data, and
> therefore got incorrect results.

Thanks for the info, I don't think I'd ever have gotten to the bottom of 
this on my own! :-)

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
             - http://www.simplistix.co.uk



More information about the Python-list mailing list