[Python-Dev] datetime +/- scalars (int, long, float)?
Guido van Rossum
guido@python.org
Mon, 04 Mar 2002 09:41:46 -0500
> > [Guido]
> > Then I propose to remove the feature of automatic mixing
> > int/long/float and datetime or timedelta instances in add/subtract
> > operations. You'll have to specify what you want using a
> > timedelta(days, seconds) constructor. That's clearer anyway.
[Kevin]
> I much prefer this. My own datetime object uses a syntax like this:
>
> t = t + Delta(days=1,minutes=-5,seconds=5)
I'm considering such an extension to the timedelta() constructor too.
> > > However, lets be clear; is t=t+1 adding 1 (calendar) day or 24 hours
> > > (86400 seconds)?
> >
> > How does it differ? (We already ignore leap seconds.)
>
> The concept of a "day" can be somewhat ambiguous. I've seen
> datetime implementations that will apply DST changes when asked to
> adjust by days, but not when asked to adjust by seconds, hours or
> minutes. So, in the general case of a DST aware datetime object,
>
> t + Delta(days=1) != t + Delta(hours=24)
>
> even when ignoring leap-seconds and other micro-adjustments. So
> lets define adjustments by "days" for the base datetime object in
> terms of 86400.0 seconds. A DST aware datetime subclass can then be
> made that does the more complex day-based arithmetic.
Yes. A "day" is always 24 hours.
--Guido van Rossum (home page: http://www.python.org/~guido/)