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