Paul.Moore at atosorigin.com
Mon Mar 15 10:52:17 EST 2004
From: Gustavo Niemeyer [mailto:niemeyer at conectiva.com]
>> >> > d.forward_months(3).end_of_month()
>> >> In dateutil, I think it's d + relativedelta(months=+1, day=1, days=-1).
>> >> Arguably, this is fairly trivial (highly non-obvious, but trivial...)
>> > Yes, it'd work, but "d + relativedelta(day=31)" would be enough.
>> Hmm, I feel vaguely uncomfortable actually relying on the "round down out
>> of range values" behaviour. Presumably day=1000 would also work, and would
>> look even stranger to me :-)
> This was a design decision, and I confess I'm pretty satisfied
> by the results of this decision. This simple decision created
> consistent and expectable results for operations which are not
> obvious. Also, without this feature, I see almost no reason for
> using this class instead of timedelta.
How about a module-level constant dateutil.LAST_DAY = 31? Then we have
d + relativedelta(day=LAST_DAY)
which looks pretty nice. Actually as someone else suggested, using -1
for the last day (and maybe -2, -3... for the next to last, etc) would
also make sense.
More information about the Python-Dev