epoch seconds from a datetime

Richard Rossel henhiskan at gmail.com
Thu Aug 28 14:33:59 EDT 2008


On 28 ago, 14:25, "Chris Rebert" <cvrebert+... at gmail.com> wrote:
> On Thu, Aug 28, 2008 at 10:18 AM, Richard Rossel <henhis... at gmail.com> wrote:
> > Hi friends,
> > I need a little help here, I 'm stuck with epoch calculation issue.
> > I have this datetime:
> > date_new = datetime(*time.strptime('20080101T000000','%Y%m%dT%H%M%S')
> > [0:6])
> > This date_new is in UTC
> > Now I need to know the seconds since epoch of this new date, so I run
> > this:
> > seconds = int(time.mktime(date_new.timetuple()))
> > but the seconds returned belongs to :
> > Tue, 01 Jan 2008 03:00:00 GMT
> > because the  localtime is in timezone 'America/Santiago': -3
>
> > I fix this trying to alter the TZ with time.tzset():
> >  os.environ['TZ'] = 'UTC'
> > time.tzset()
>
> > .... and now I can gets the right epoch, but I can't restore the
> > previous TimeZone, I try with:
> > os.environ['TZ'] = '', but the time.tzset() doesn't back to the
> > original ( America/Santiago)
>
> I think you need to del os.environ['TZ'] rather than setting it to the
> empty string.
>
> On my box:
> Python 2.5.1 (r251:54863, Feb  4 2008, 21:48:13)
> [GCC 4.0.1 (Apple Inc. build 5465)] on darwin>>> import os, time
> >>> time.asctime()
>
> 'Thu Aug 28 11:19:57 2008'>>> #that's my correct local time
> >>> time.tzname
> ('PST', 'PDT')
> >>> #that's my correct timezone
> >>> os.environ['TZ'] = 'UTC'
> >>> time.tzset()
> >>> time.tzname
> ('UTC', 'UTC')
> >>> time.asctime()
>
> 'Thu Aug 28 18:20:33 2008'>>> #we're clearly in UTC now
> >>> del os.environ['TZ'] #this is the key line
> >>> time.tzset()
> >>> time.tzname
> ('PST', 'PDT')
> >>> time.asctime()
>
> 'Thu Aug 28 11:21:05 2008'
>
> >>> #and now we're back to my original timezone


Thanks Chris, and also I found that with reload(time)  works too

--
Richard Rossel
Ing. Civil Informatico
Valparaiso, Chile



More information about the Python-list mailing list