[Datetime-SIG] A local timezone class

Guido van Rossum guido at python.org
Sat Aug 29 02:47:48 CEST 2015


On Fri, Aug 28, 2015 at 5:26 PM, Alexander Belopolsky <
alexander.belopolsky at gmail.com> wrote:

>
> On Fri, Aug 28, 2015 at 8:06 PM, Guido van Rossum <guido at python.org>
> wrote:
>
>> ..
>> So, again, why have we been shy of adding this to the stdlib? We did
>> (eventually) add the fixed offset classes.
>>
>
> I may be wrong, but I thought it was due to unresolvable DST fold issues
> that are mooted by PEP 495.  (At least that was the reason I did not push
> for LocalTimezone as hard as I did for the fixed offset class.)
>

Again, that sounds like perfection being the enemy of the good. :-( Those
issues are resolved by the demo class however mktime() resolves them when
tm_isdst is set to -1. Outside the fold it should work fine, and in the
fold it should work as well as can be expected. :-)

I am definitely +1 on having LocalTimezone (or timezone.local) in the
> datetime module, but there is one reason why I would rather see it as a
> part of a larger Olson TZ database-size offering.
>
> If we just add LocalTimezone, pickling a datetime instance on one system
> and reading it on another with a different TZ will result in changing the
> time value.
>

OK, that's definitely a concern.


> On the other hand, if we have a complete TZ database, then LocalTimezone
> can simply become an alias for Zoneinfo(os.environ['TZ']) and there will be
> no problem sharing aware datetime objects between systems that use the same
> version of the database.
>

(But can a TZ database ever be considered complete? :-)

I think the best way out of this will be for there to be two different
local timezone objects: one that always defers to what the time module
reveals about local time, another that is always tied to the local zone as
it is recorded in the tz database. The two may differ even if they agree
about the tz name; the tz database may have historical details that are
missing from the implementation consulted by mktime() and localtime() (e.g.
on Windows, or using certain encodings of the TZ environment variable on
certain systems).

-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/datetime-sig/attachments/20150828/67a0cb48/attachment.html>


More information about the Datetime-SIG mailing list