#--------------------------------------------------
#------Answer Sheet: Problem: date management------
#--------------------------------------------------

# Question1:
>>> s='12-03-2021'
>>> s.split()
['12-03-2021' ]
>>> s.split('-')
['12', '03', '2021']
>>> s.split('/')
['12-03-2021' ]
>>> s.replace('-','/').split('/')
['12', '03', '2021']

# Question2:
def decouper(s,iter):
    new_s=s
    for c in iter:
        new_s=new_s.replace(c,'*')
    date_list=new_s.strip().split('*')
    return date_list

# Question3:
def liste_conv(l):
    try:
        return [int(k) for k in l]
    except:
        return []

# Question4:
mois=[
         {'nb_j':31,'libelle':'Janvier'},
         {'nb_j':28,'libelle':'Février'},
         {'nb_j':31,'libelle':'Mars'},
         {'nb_j':30,'libelle':'Avril'},
         {'nb_j':31,'libelle':'Mai'},
         {'nb_j':30,'libelle':'Juin'},
         {'nb_j':31,'libelle':'Juillet'},
         {'nb_j':31,'libelle':'Août'},
         {'nb_j':30,'libelle':'Septembre'},
         {'nb_j':31,'libelle':'Octobre'},
         {'nb_j':30,'libelle':'Novembre'},
         {'nb_j':31,'libelle':'Décembre'} 
    ]
def date_correcte(d):
    if 1<=d[0]<=mois[d[1]]['nb_j'] and 1<=d[1]<=12 and d[2]<=9999: return True
    else: return False 

# Question5:
def saisir_date():
    while True:
        dt=input("donner une date sous cette format JJ-MM-AAA ou JJ/MM/AAA")
        dt_decoupe=decouper(dt,'/-')
        dt_detail=liste_conv(dt_decoupe)
        if date_correcte(dt_detail):
           break
    return  dt_detail

# Question6:
def max_dates(d1,d2):
    if d1[-1]<d2[-1]:return d2
    elif d2[-1]<d1[-1]:return d1
    elif d1[1]<d2[1]:return d2
    elif d2[1]<d1[1]:return d1
    elif d2[0]<d1[0]:return d2
    elif d2[0]<d1[0]:return d1

# Question7:
def diff_date(d0,d1):
    years=d1[2]-d0[2]
    if (d1[1]>=d0[1]):
            months=d1[1]-d0[1]
    else:
            months=12+d1[1]-d0[1]
            years=years-1
    if d1[0]>d0[0]:jours=d1[0]-d0[0]
    else:jours=mois[d1[0]]['nb_j']+d1[0]-d0[0]
    return {'jour':jours,'month':months,'years':years}

# Question 8
def verifier_anniv():
    try:
        print('------date de naissance----')
        date_naissance=saisir_date()
        while True:
            print('------date qque----')
            date_qque=saisir_date()
            if max_dates(date_naissance,date_qque):
                print('marche')
                break
        age_exac=diff_date(date_naissance,date_qque)
        print("l'age exacte est :",age_exac['jour'],"jours",age_exac['month'],"mois",age_exac['years'],"ans")
        if age_exac['jour']==age_exac['month']==0:
            print('Bonne anniversaire')
    except:
        print("il y a eu une erreur")
        verifier_anniv() # Pour forcer l'exécution <facultatif>


