Bonjour,
Je souhaite calculer l'age d'une personne avec un affichage conditionnel
en fonction de celui ci.
si age < 3 mois on affiche le nombre de jours
si age < 1 an on affiche le nombre de mois
sinon on affiche l'age en année.
Voici ma fonction mais elle ne couvre pas tous les cas
import datetime
# date au format JJ/MM/AAAA
#CreateDateObject crée un objet datetime
def CalculerAgeEtLibelle( date, ref_date = Today() ):
age = ""
if date:
dn = CreateDateObject( date )
rd = CreateDateObject( ref_date )
diff = rd - dn
nb_jours = diff.days
if nb_jours < 90:
age = str(nb_jours) + " jour"
if nb_jours != 1:
age += "s"
elif diff.days < 365:
age = str(int( nb_jours / 30 )) + " mois"
else:
annee = int( nb_jours / 365.25 )
age = str(annee) + " an"
if annee != 1:
age += "s"
return age
def CreateDateObject(maDate):
(ji, mi, ai) = GetComposantDate(maDate)
oDate = datetime.datetime(ai,mi,ji)
return oDate
def GetComposantDate(maDate):
ji = int(maDate[0:2])
mi = int(maDate[3:5])
ai = int(maDate[6:10])
return (ji,mi,ai)
def Today():
( year, month, day, hour, min, sec, weekday, julianday, dummy ) =
localtime()
return "%02d/%02d/%04d" %( day, month, year )
Si aujourd'hui == 18/07/2007
Ne marche pas pour date de naissance le 18/04/2007, la fonction devrait
me retourner 3 mois et non 90 jours.
Idem, je risque de rencontrer des soucis avec les années bissextiles.
Je n'ai rien trouvé dans les module datetime, si vous avez une idée,
merci !!!
ReM