################################################################## #PIEDLOUP Sebastien #sebastien.piedloup@ipsl.jussieu.fr #juillet 2003 ################################################################## ################################################################## #Module qui definit un calendrier de 365 jours et qui renvoie une date valide ################################################################## #!/usr/bin/env python #Tableau definissant la duree des mois dans un calendrier de 365 jours tab=[31,28,31,30,31,30,31,31,30,31,30,31] ################################################################## #Fonction qui se charge des mois et jours negatifs ou nul ################################################################## def pre(y,m,d): #print "1",y,m,d if m==0: return pre(y-1,12,d) if m<=0: return pre(y-abs((m-1)/12),abs((m-1)%12+1),d) if d==0: return pre(y,m-1,tab[(m-2)%12]) if d<0: return pre(y-abs((d-1)/365),m,abs((d-1)%365+1)) return date_365d(y,m,d) ################################################################## #Fonction qi renvoit une date valide sur un calendrier de 365 jours ################################################################## def date_365d(y,m,d): #print "2",y,m,d mm=m-1 if mm/12: return date_365d(y+(mm/12),mm%12+1,d) if (d-1)/tab[mm]: return date_365d(y,m+1,d-tab[mm]) return y,m,d #print pre(1987,1,365)