PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Fonction Age()
Fonction Age()
Iniciado por cf2icourrier, 01,mar. 2019 13:37 - 6 respuestas
Publicado el 01,marzo 2019 - 13:37
Bonjour
La fonction Age est intéressante mais elle m'intrigue.
Quelqu'un saurait me justifier pourquoi dans cet exemple, le nombre de jours reste identique sur 4 dates séparées d'un jour entre elles ?


Aujourd'hui : 01/03/2019
01/03/2019 0 0 0
01/02/2019 0 1 0
31/01/2019 0 1 0
30/01/2019 0 1 0
29/01/2019 0 1 0
28/01/2019 0 1 1
27/01/2019 0 1 2

dateAge est Date
Date est Date
Trace("Aujourd'hui : "+DateVersChaîne(DateSys()))
Date= DateSys()
dateAge = Age (Date,DateSys())
Trace(DateVersChaîne(Date)+" "+ dateAge..Année, dateAge..Mois, dateAge..Jour)
Date="20190228"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois, dateAge..Jour)
Date="20190201"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois, dateAge..Jour)
Date="20190131"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois, dateAge..Jour)
Date="20190130"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois, dateAge..Jour)
Date="20190129"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois, dateAge..Jour)
Date="20190128"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois, dateAge..Jour)
Date="20190127"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois, dateAge..Jour)
Publicado el 01,marzo 2019 - 18:05
Après mûre réflexion, elpato a écrit :
Bonjour
La fonction Age est intéressante mais elle m'intrigue.
Quelqu'un saurait me justifier pourquoi dans cet exemple, le nombre de jours
reste identique sur 4 dates séparées d'un jour entre elles ?


Aujourd'hui : 01/03/2019
01/03/2019 0 0 0
01/02/2019 0 1 0
31/01/2019 0 1 0
30/01/2019 0 1 0
29/01/2019 0 1 0
28/01/2019 0 1 1
27/01/2019 0 1 2

dateAge est Date
Date est Date
Trace("Aujourd'hui : "+DateVersChaîne(DateSys()))
Date= DateSys()
dateAge = Age (Date,DateSys())
Trace(DateVersChaîne(Date)+" "+ dateAge..Année, dateAge..Mois,
dateAge..Jour)
Date="20190228"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois,
dateAge..Jour)
Date="20190201"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois,
dateAge..Jour)
Date="20190131"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois,
dateAge..Jour)
Date="20190130"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois,
dateAge..Jour)
Date="20190129"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois,
dateAge..Jour)
Date="20190128"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois,
dateAge..Jour)
Date="20190127"
dateAge = Age (Date,DateSys())
Trace( DateVersChaîne(Date)+" "+dateAge..Année, dateAge..Mois,
dateAge..Jour)


Bonjour,

La fonction Age ne retourne pas une date mais une chaîne au format
AAAAMMJJ.

Cordialement.

Patrick Bouquet
Miembro registrado
101 mensajes
Publicado el 01,marzo 2019 - 18:52
Salut,

En effet, c'est étonnant, car un calcul de durée entre ces mêmes dates, donnent bien 28, 29, 30 et 31 jours d'écart
Mais quand on additionne chaque date de départ avec la durée calculée, on obtient à chaque fois 01/03/2019

du1 est une Durée
du2 est une Durée
du3 est une Durée
du4 est une Durée
D1 est une Date
D2 est une Date = "20190201"
D3 est une Date

D1 = DateDuJour
D2 = "20190201"
du1 = D1 - D2
D3 = D2 + du1
Trace( D3 )
Trace( du1 )

D1 = DateDuJour
D2 = "20190131"
du2 = D1 - D2
D3 = D2 + du2
Trace( D3 )
Trace( du2 )

D1 = DateDuJour
D2 = "20190130"
du3 = D1 - D2
D3 = D2 + du3
Trace( D3 )
Trace( du3 )

D1 = DateDuJour
D2 = "20190129"
du4 = D1 - D2
D3 = D2 + du4
Trace( D3 )
Trace( du4 )


Trace:
20190301
28000000000
20190301
29000000000
20190301
30000000000
20190301
31000000000



Je pense qu'il doit y avoir une "verrue" bugguée dans la gestion des dates avec les 28 jours du mois de février

--
@+
Maax°(51)°
Publicado el 01,marzo 2019 - 19:06
An utilisant des variables de type chaine on obtient un résultat correct

Date_Age est une chaîne
Date_Debut est une chaîne="20190228"
Date est une chaîne=Date_Debut
Trace("Date de départ : "+DateVersChaîne(Date))
POUR Incr=1 À 10
Date_Age = Age (Date,Date_Debut)
Trace(DateVersChaîne(Date)+" "+Date_Age+" "+ Date_Age[[1 À 4]], Date_Age[[5 À 6]], Date_Age[[7 À 8]])
Date=EntierVersDate(DateVersEntier(Date)-1)
FIN

Trace
Date de départ : 28/02/2019
28/02/2019 00000000 0000 00 00
27/02/2019 00000001 0000 00 01
26/02/2019 00000002 0000 00 02
25/02/2019 00000003 0000 00 03
24/02/2019 00000004 0000 00 04
23/02/2019 00000005 0000 00 05
22/02/2019 00000006 0000 00 06
21/02/2019 00000007 0000 00 07
20/02/2019 00000008 0000 00 08
19/02/2019 00000009 0000 00 09
Publicado el 02,marzo 2019 - 11:29
Bonjour

A Maax(53):

Non le bug demeure avec le mois de février.
Par exemple :
Le calcul démarre à compter du 02/03/2019.
Pour le 02/02/2019: 1 mois pile (correct)
Pour le 01/02: 1 mois + 1 jour (correct)
pour le 31/01 : 1 mois + 1 jour (donc incorrect)
pour le 30/01 : 1 mois + 1 jour (donc incorrect)
pour le 29/01 : 1 mois + 1 jour (donc incorrect)
pour le 28/01 : 1 mois + 2 jours au lieu de 1 mois + 5 jours.
Miembro registrado
3.786 mensajes
Publicado el 03,marzo 2019 - 05:45
La réponse est dans l'aide.
La première date dans la fonction doit être inférieur a la deuxième.
Publicado el 03,marzo 2019 - 13:49
Oui, c'est le cas... : la première date est bien inférieure à la seconde voir exemple.
De toutes façons, si date1 > date2 , la fonction renvoie une chaine vide.
Donc il y a bien un souci je pense.