Bonjour,

Voila je cherche a déterminer une date, ou un écart de date a partir d'un datestamp.

Donc déjà pour déterminer une date, celle du jour par exemple, je récupère le stamp (en C++) et je fait ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
//Donc on part du 1 1 1970 (Obligé c'est comme ça que le système donne le stamp
Jour = 1, Mois = 1, Annee = 1970
 
//On rajoute au jour le nombre de jour du stamp
Jour = Jour + (stamp/86400)
 
//Ensuite on construit une date valide
TANT QUE Mois > 12 OU Jour > NbrJoursMois(Mois, Annee)
DEBUT
 
    SI Mois > 12 ALORS
        Annee = Annee + (Mois / 12)
        Mois = (Mois % 12 ? Mois % 12 : 1)
    FIN
 
    SI Jour > NbrJoursMois(Mois, Annee) ALORS
        Jour = Jour - NbrJoursMois(Mois, Annee)
        Mois = Mois + 1
    FIN
 
FIN
Alors déjà que pensez vous de cet algo?
On fait en gros 450 passage pour calculer la date d'aujourd'hui a partir de ça, est ce raisonnable?

Et ensuite, et c'est la que j'ai mon soucis, c'est pour calculer l'écart entre deux dates.
Pour le moment je fais comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
//Je calcul 2 stamps
Jour1 = 2, Mois1 = 6 , Annee1 = 2007
Jour2 = 2, Mois2 = 6 , Annee2 = 2008
 
SI Mois1 <= 2 ALORS
        Annee1 = Anne1 - 1
        Mois1 = Mois1 + 13
SINON
        Mois1 = Mois1 + 1
FIN
 
Stamp1 = ((1461 * Annee1) / 4) + ((153 * Mois1) / 5) + Jour1
 
SI Mois2 <= 2 ALORS
        Annee2 = Anne2 - 1
        Mois2 = Mois2 + 13
SINON
        Mois2 = Mois2 + 1
FIN
 
Stamp2 = ((1461 * Annee2) / 4) + ((153 * Mois2) / 5) + Jour2
 
//On fait la difference des stamps et on prend la valeur absolue
DiffStamps = |Stamp2 - Stamp1|
 
//On calcule le nombre d'années, de mois et de jours
NbrAnnees = DiffStamps / 365.25
Reste = DiffStamps % 365.25
 
NbrMois = Reste / 30
Reste = Reste % 30
 
NbrJours = Reste
Mais avec ceci j'ai un décalage. Ca ne fonctionne pas correctement.
Et je n'ai pas réussi a déterminer une autre manière.

Merci pour votre aide