On Wed, Sep 2, 2015 at 1:20 PM, Tim Peters <[email protected]> wrote:
> [Alex] > > There are two more cases: > > > > (1) datetime.now() will return fold=1 instances during one hour each > year; > > (2) datetime.fromtimestamp(s) will return fold=1 instances for some > values > > 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.
_______________________________________________ Datetime-SIG mailing list [email protected] https://mail.python.org/mailman/listinfo/datetime-sig The PSF Code of Conduct applies to this mailing list: https://www.python.org/psf/codeofconduct/
