[Zope3-Users] obtaining time zone from http request
Gary Poster
gary at zope.com
Sun Aug 28 23:30:07 EDT 2005
On Aug 28, 2005, at 10:59 PM, Stephan Richter wrote:
> On Sunday 28 August 2005 21:10, Alen Stanisic wrote:
>
>> what's the best way to obtain timezone from request object. I tried
>>
>> tz = pytz.timezone(ITZInfo(self.request))
>>
>> but the adaptation failed.
>
> Getting a single time zone from the request is not sensible.
> Requests know
> only about the locale. But the locale can be applicable in multiple
> timezones. However, the locale usually knows about the timezones
> that are
> part of the locale. The object ``request.locale.dates.timezones`` is a
> mapping from timezone names (in the ICU format) to
> ``zope.i18n.interfaces.locales.ITimeZone`` objects.
Other excitement: the timezone names in the ICU database do not all
correspond to the timezones in the olson timezone database (upon
which pytz is based).
Generally, you want to let users choose their timezone. Guessing can
work like this though (Py 2.4):
ALL_TIMEZONES = frozenset(pytz.all_timezones)
for t in self.request.locale.dates.timezones.keys():
if t in ALL_TIMEZONES:
return pytz.timezone(t)
Maybe the ICU timezone object has alternate names to try in Olson; I
forget.
> Unfortunately the version of the ICU data we are using does not
> have very good
> timezone support. At some point we need to switch to a newer
> version, which
> is much better with timezones as far as I remember.
I looked around at this a month or two ago and didn't see much
improvements, actually. Maybe I'm wrong.
Gary
More information about the Zope3-users
mailing list