[Datetime-SIG] Another round on error-checking
alexander.belopolsky at gmail.com
Wed Sep 2 19:40:15 CEST 2015
On Wed, Sep 2, 2015 at 1:20 PM, Tim Peters <tim.peters at gmail.com> wrote:
> > There are two more cases:
> > (1) datetime.now() will return fold=1 instances during one hour each
> > (2) datetime.fromtimestamp(s) will return fold=1 instances for some
> > of s.
> Sure - but anything reflecting how a local clock actually behaves is
> outside of "naive time". Clocks in naive time never jump forward or
> backward. Specifically, .now() and .fromtimestamp() are also
> operations outside of naive time.
I agree, but the worst thing we can do to our users is to plant a time bomb
that will go off once a year. Suppose someone has a program that uses
naive local times and relies on t < prev_t test to detect the fall-back
fold and do something about it. If we don't ignore fold in naive datetime
comparisons - this program will start producing incorrect results.
Fortunately, we don't need to do anything about naive times. The hash
invariant is only violated by aware instances.
I think what you are really fighting against is the notion that for regular
times, fold=1 is just an alternative spelling for fold=0 times. It looks
like you would rather see fold=1 as some different (and invalid) time.
Think of the German A and B hours: are regular hours A or B? The German
standard say that they are neither, but PEP 495 say that they are both: 2A
is the same as 2B unless "2" in the fold and that allows you not to
display A/B in those cases.
Folds do not exist in naive time, so all times are regular and therefore
time(h, m, s, us, fold=0) == time(h, m, s, us, fold=1) always.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Datetime-SIG