Aritmética de fechas
Chema Cortés
py en ch3m4.org
Mar Ene 4 11:04:08 CET 2005
El Martes, 4 de Enero de 2005 03:27, Pablo Rey Sobral escribió:
>
> A ver si esto te soluciona la curiosidad:
>
> from datetime import datetime, timedelta
>
> def DiasMes(f):
> if f.month in (1,3,5,7,8,10,12):
> return 31
> elif f.month in (4,6,9,11):
> return 30
> else: # febrero
> if (f.year % 4) == 0 and not((f.year % 400) in (100,200,300)):
> return 29
> else:
> return 28
Se podrías emplear el módulo 'calendar' para ésto mismo:
import calendar
def DiasMes(f):
firstweekday,days=calendar.monthrange(f.year,f.month)
return days
> def SumaMeses(delta, ini):
> res = ini.replace(day=1)
> for x in range (0,delta):
> res += timedelta(DiasMes(res))
>
> if ini.day > DiasMes(res):
> return res.replace(day = DiasMes(res))
> else:
> return res.replace(day = ini.day)
def SumaMeses(delta,ini):
years,month=divmod(ini.month+delta,12)
return datetime.date(
ini.year+years,
month,
min(ini.day,DiasMes(month))
)
> x = datetime(2000,1,31)
> print SumaMeses(1,x)
PD: Sí, ya lo sé. Me pirra refactorizar, ¿qué pasa? :-D
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20050104/f4bc93ff/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es