[Python-Dev] dateutil (original) (raw)
Kevin Jacobs jacobs at theopalgroup.com
Mon Mar 15 10:42:26 EST 2004
- Previous message: [Python-Dev] dateutil
- Next message: [Python-Dev] PyCon BOF schedule
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Gustavo Niemeyer wrote:
d.forwardmonths(3).endofmonth()
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.
The alternative way to getting the end of the month (which I used in my datetime class) was to perform two adjustments:
end_of_month = date.adjust_absolute(day=1).adjust_relative(month=+1,day=-1)
This requires that the relative adjustments are applied in order from most significant adjustment to least. Now that I've seen the Gustavo's semantics, I think his may be more sensible (even though the particular gymnastics where hidden behind a helper- method, so that most developers never had to know these subtleties).
-Kevin
- Previous message: [Python-Dev] dateutil
- Next message: [Python-Dev] PyCon BOF schedule
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]