Python and timezones

shandy.b at gmail.com shandy.b at gmail.com
Thu Jul 3 21:19:58 EDT 2008


I found a solution:

http://groups.google.com/group/comp.lang.python/browse_thread/thread/aea64448eaca4778/250e908652e2646d

If I use datetime.now(tz=tz) instead of datetime(Y,M,D,h,m,s,
tzinfo=tz), it works.


On Jul 3, 4:18 pm, "shand... at gmail.com" <shand... at gmail.com> wrote:
> Nah, it's got to be something more than that.  A bunch of them are
> screwed up.  It's showing America/Saskatchewan as UTC-06:59.
>
> I think there's something wrong with my code.  I've put it up at a
> pastebin so that it's easier to read.
>
> http://pastebin.ca/1061776
>
> On Jul 2, 11:22 am, Mensanator <mensana... at aol.com> wrote:
>
> > On Jul 2, 12:43 am, "shand... at gmail.com" <shand... at gmail.com> wrote:
>
> > > I'm trying to write some code to deal with world timezones, and I'm
> > > getting a strange result.  America/Iqaluit should not be showing up in
> > > UTC+00:00, but it is.  Can anyone see what's wrong with this code?
>
> > > import time
> > > from datetime import datetime
> > > import os
> > > import pytz
>
> > > def getZoneNamesOnThisComputer():
> > >     for i in pytz.all_timezones:
> > >         if os.path.exists( os.path.join('/tmp/usr/share/zoneinfo/',
> > > i)):
> > >             yield i
>
> > > def getZonesGroupedByOffset():
> > >     '''return a dict of all the zone names , grouped by their offset
> > >     eg:
> > >     {'-0400': ['America/Blanc-Sablon', 'Etc/GMT+4'],
> > >      '+0000': ['America/Iqaluit', 'Etc/GMT', 'Europe/Belfast', 'GB',
> > > 'GMT'],
> > >      ...
> > >     }
> > >     '''
> > >     Y,M,D,h,m,s = time.localtime()[:6]
>
> > >     zonesGroupedByOffset = {}
>
> > >     for name in getZoneNamesOnThisComputer():
> > >         tz = pytz.timezone(name)
> > >         now = datetime(Y,M,D,h,m,s, tzinfo=tz)
> > >         # strfime returns a string like "-0800" or "+0430" or "0000"
> > >         offsetKey = now.strftime('%z')
> > >         if not zonesGroupedByOffset.has_key(offsetKey):
> > >             zonesGroupedByOffset[offsetKey] = []
> > >         zonesGroupedByOffset[offsetKey].append(name)
> > >     return zonesGroupedByOffset
>
> > > z = getZonesGroupedByOffset()
> > > print z['+0000']
>
> > > # Why is America/Iqaluit showing up here???
>
> > The database contains an error. Shit happens, deal with it.
>
>




More information about the Python-list mailing list