Datetime utility functions
Christos TZOTZIOY Georgiou
tzot at sil-tec.gr
Tue Sep 16 10:15:24 EDT 2003
On 15 Sep 2003 08:07:07 -0700, rumours say that
paul.moore at atosorigin.com (Paul Moore) might have written:
[about missing datetime functionality]
>1. Get the last day of the month contatining a given date(time). I
>really was surprised to find this one missing, as it seems to me that
>the datetime module must know what the last day for each month is, so
>exposing it wouldn't have been hard.
I would guess that the simple ones were not included just because they
are only a few lines each:
def end_of_month(a_date):
year_inc, month_inc = divmod(a_date.month, 12)
return a_date.__class__(a_date.year+year_inc, 1+month_inc, 1) - \
datetime.timedelta(days=1)
def month_days(a_date):
return end_of_month(a_date).day
Examples:
>>> end_of_month(datetime.date.today())
datetime.date(2003, 9, 30)
>>> end_of_month(datetime.datetime(1972,2,11))
datetime.datetime(1972, 2, 29, 0, 0)
>>> month_days(datetime.date.today())
30
>>> end_of_month(datetime.date(1977,12,15))
datetime.date(1977, 12, 31)
The add_months_to_date seems not that hard too, but I don't have a need
for one so far, so I haven't coded it :) My needs for datetime
intervals are usually of the 'one month start - another month end' kind,
so end_of_month is handy. If you do think these would be useful, feel
free to use them (or your own versions) for a patch.
Date / timedelta rounding / truncating to various units would have to
take account of many different rules, and none would be very generic
IMHO.
--
TZOTZIOY, I speak England very best,
Microsoft Security Alert: the Matrix began as open source.
More information about the Python-list
mailing list