LE TEMPS
ENTRE DEUX DATES
par Charles Hubert
Les
dates
Les
calculs sur les dates rencontrent la difficulté des années et des mois de
tailles variables. On peut simplifier ces calculs en codant toutes les dates en
jours comptés à partir d'une référence ; j'ai choisi celle-ci au
01 Mars 2000 pour deux raisons :
1)
C'est une date contemporaine et le nombre de jours reste petit en valeur
absolue dans les applications ;
2)
Les fonctions de conversion sont plus simples.
Le
nombre de jours antérieurement à la référence est négatif, mais cela n'a aucune
importance. Les deux conversions sont assurées par les fonctions
"JRDAT" et "DATJR" qu'on utilise de la manière
suivante :
Notre
calendrier insère un 29 Février les années bissextiles. Les deux fonctions
simplifient le travail en décalant l'année de manière à la commencer le
01 Mars, considéré comme jour zéro du mois zéro ; alors le jour
supplémentaire se situe à la fin de cette année décalée. Explication des
constantes figurant dans les fonctions :
On
ne soucie pas de l'année 4000 ; une dérive d'environ 1 jour tous
les 4000 ans n'a aucune importance pratique, l'humanité saura bien s'en
accomoder, ou adopter un système différent.
Exemples :
et réciproquement :
JRDAT
accepte des dates exotiques mais DATJR respecte l'usage :
Il
est alors facile de calculer le nombre de jours entre deux dates :
On
peut aussi calculer le jour de la semaine correspondant à une date :
ou bien
Le
temps écoulé
Les
fichiers d'APL*PLUS codent tout instant utile par le temps écoulé depuis le
01 Janvier 1900 à 0 heure, exprimé en microsecondes. Les deux
conversions entre ce temps et la date et l'heure au format sont assurées par les
fonctions "MSTS" et "TSMS" qu'on utilise de la manière
suivante :
Explication
de la constante figurant dans les fonctions :
Exemple :
Le
calendrier
Par
exemple une fonction "Calend" génère le calendrier d'une année :
4 Calend 2006
Les
fonctions
On peut les trouver dans le fichier APL*PLUS 'dates.sf' ; la composante 1 contient une table des matières, les composantes suivantes contiennent les de ces fonctions.