Re: [Datetime-SIG] Calendar vs timespan calculations...
[Ćukasz Rekucki]
What happens then when you substract a datetime with *strict* tzinfo and a *naive* one? Would A - B == - (B - A) still be true ?
[Guido]
[re-adding the list]
That's for the authors of the new PEP to decide, really, but I think it could be made to follow the strict rules in both cases, since clearly the code isn't an old program requiring backward compatibility (how would such a program end up with a strict tzinfo?).
This one solves itself: it's _already_ the case that subtraction of aware datetime objects uses timeline arithmetic _unless_ both datetimes share a .tzinfo member. If one uses a tzstrict instance and the other does not, it's impossible that they both use the same instance. So timeline arithmetic will be used in any such case. Maybe some sketchy pseudocode will make it more obvious: class datetime: ... def __sub__(x, y): # assume x and y are both aware datetimes if x.tzinfo is y.tzinfo: # compute the difference using classic arithmetic else: # compute the difference using timeline arithmetic It's been like that forever. Note that the order of the operands is irrelevant to which kind of arithmetic is used. The same applies, mutatis mutandis, to datetime comparison operations.. What does need to change is that "x.tzinfo is y.tzinfo" needs more qualification, so that two datetimes sharing the same tzstrict instance don't end up using classic subtraction. I'm sure the docs will become even more pleasant to read ;-)
participants (1)
-
Tim Peters