[Zope3-dev] Re: [Python-Dev] Holes in time

M.-A. Lemburg mal@lemburg.com
Mon, 06 Jan 2003 18:09:17 +0100


Tim Peters wrote:
>>>...
>>>Let z = y - x.o + y.s.
>>>...
> 
> [M.-A. Lemburg]
> 
>>Care to explain what .o, .n and .s mean for the casual reader ;-)
> 
> 
> Nope.  The casual reader isn't interested enough to be worth the bother.
> The non-casual reader should read the full proof (at the end of
> datetimemodule.c or datetime.py), which defines the notation.

"""
For a datetimetz x, let
     x.n = x stripped of its timezone -- its naive time.
     x.o = x.utcoffset(), and assuming that doesn't raise an exception or
           return None
     x.d = x.dst(), and assuming that doesn't raise an exception or
           return None
     x.s = x's standard offset, x.o - x.d
"""

>>...
>>I think you are missing a point here: time zones don't have DST.
> 
> 
> I understand.  tzinfo subclasses can, though.  The USTimeZone tzinfo
> subclass posted earlier in this thread, and its 4 instances, was a fully
> fleshed-out example.
> 
> 
>>>>from datetime import *
>>>>t = timetz(3, 15, tzinfo=Eastern)
>>>>print datetimetz.combine(date(2003, 1, 6), t)
> 
> 2003-01-06 03:15:00-05:00
> 
>>>>print datetimetz.combine(date(2003, 8 ,1), t)
> 
> 2003-08-01 03:15:00-04:00
> 
> As the output shows, Eastern models both EST (-05:00) and EDT (-04:00).
> astimezone() wants to give sensible (as sensible as possible) results for
> converting between such hybrid "time zones" too.  It's also possible (easy)
> to create tzinfo subclasses that model only EST, or only EDT, but they seem
> less useful in real apps.

In that case you should follow the standard way of using
the name of the locale to define your timetz subclasses,
e.g. EasternUS, CentralUS, etc.

>>Each time zone describes a fixed offset from UTC and whenever
>>the locale applies DST, the time zone for that locale switches
>>to a new time zone, e.g. MET becomes MEST. The disruption you are
>>seeing at the DST switch times comes from switching the time zone
>>and is not caused by the locale's clocks doing a "jump" like in a
>>Feynman diagram.
> 
> The disruption exists in real life, and we're allowing for a tzinfo subclass
> to model it faithfully.

Fair enough.

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
_______________________________________________________________________
eGenix.com -- Makers of the Python mx Extensions: mxDateTime,mxODBC,...
Python Consulting:                               http://www.egenix.com/
Python Software:                    http://www.egenix.com/files/python/