Chapitre 16 - Gestion des dates et heures▲
Le système de l'ordinateur travaille avec l'horloge à quartz qui donne le tempo de calcul. Cette horloge possède sa propre date et heure qu'il est possible d'afficher ou de modifier. À partir du prompt MS-DOS, il suffit d'utiliser les commandes Date ou Time, mais en Turbo Pascal, c'est un peu plus délicat. En effet, en Pascal, il est nécessaire de déclarer un grand nombre de variables qu'il faut formater avant l'affichage.
Toutes les instructions qui suivent nécessitent l'unité Dos.
GetDate▲
GetDate (an, mois, jour, joursem);
Pour obtenir la date courante du système, avec :
- an : le numéro de l'année (compris entre 1980 et 2099),
- mois : le numéro du mois (1 à 12),
- jour : le numéro du jour dans le mois (1 à 31),
- joursem : le numéro du jour dans la semaine (0 à 6, le zéro correspondant au dimanche).
Ces variables sont déclarées en word (entiers positifs de 0 à 65535).
SetDate▲
SetDate (an, mois, jour);
Pour changer la date du système. Ici, les variables obéissent aux mêmes conditions décrites précédemment. Si une date entrée est invalide, alors elle ne sera pas prise en compte et la date restera inchangée.
GetTime▲
GetTime (heure, minute, seconde, centieme);
Pour obtenir l'heure courante, avec :
- heure : le numéro de l'heure (0 à 23),
- minute : le numéro de la minute (0 à 59),
- seconde : numéro de la seconde (0 à 59),
- centieme : les centièmes de seconde (0 à 99).
SetTime▲
SetTime (heure, minute, seconde, centieme);
Pour changer l'heure système. Les variables obéissant aux mêmes conditions décrites plus haut. Si une heure entrée est invalide, alors elle ne sera pas prise en compte et l'heure courante n'en sera aucunement affectée.
Exemple récapitulatif sur la date et l'heure système▲
Vous pouvez télécharger le programme annoté et explicatif DATE.PAS :
Program
Date;
{ * DECLARATION DE L'UNITE UTILISEE : }
Uses
Dos; {unité utilisée}
{ * DECLARATION DES CONSTANTES UTILISEES : }
Const
{tableau contenant les jours de la semaine}
Jours : Array
[0
..6
] of
String
[8
] = ('dimanche'
,'lundi'
,'mardi'
,'mercredi'
,'jeudi'
,'vendredi'
,'samedi'
);
{tableau contenant les mois de l'année}
Mois : Array
[0
..11
] of
String
[9
] = ('décembre'
,'janvier'
,'février'
,'mars'
,'avril'
,'mai'
,'juin'
,'juillet'
,'août'
,'septembre'
,'octobre'
,'novembre'
);
{ * DECLARATION DES VARIABLES UTILISEES : }
Var
a, m, j, Jour, Heure, Min, Sec, Cent : Word
;
{ a : numéro de l'année [1980..2099]
m : numéro du mois [1..12]
j : numéro du jour dans le mois [1..31]
Jour : nom du jour dans la semaine [0..6]
Heure : numéro de l'heure [0..23]
Min : numéro de la minute [0..59]
Sec : numéro de la seconde [0..59]
Cent : numéro du centième de seconde [0..99] }
{ * DECLARATION DE LA FONCTION UTILISEE : }
Function
Format (w : Word
) : String
;
{ Convertit un word en chaine sur 2 caractères }
Var
s : String
;
Begin
{début de la fonction}
Str(w,s); {convertit w en chaine}
if
Length(s) = 1
then
s := '0'
+ s; {toujours sur 2 caractères}
Format := s; {la fonction Format prend la valeur de S}
End
; {fin de la fonction}
BEGIN
{début du programme principal}
GetDate(a,m,j,Jour); {lecture de la date système}
Write
('Nous sommes le '
,Jours[Jour],' '
,j,' '
,mois[m],' '
,a);
GetTime(Heure,Min,Sec,Cent); {lecture de l'heure système}
WriteLn(' et il est'
,Format(Heure),':'
,Format(Min),':'
,Format(Sec),'.'
,Format(Cent));
END
. {fin du programme}
GetFTime▲
GetFTime (f, Heure);
Pour obtenir la date de dernière modification de fichier. Ici, f est une variable d'appel de fichier (file, file of … ou text) et Heure est une variable de type LongInt.
SetFTime▲
SetFTime (f, Heure);
Vous l'aurez deviné, c'est la réciproque de l'instruction GetFTime.
Unpacktime▲
UnpackTime (Heure, dt);
Une information obtenue avec l'instruction GetFTime est illisible sans avoir été décodée avec cette instruction, où Heure est la même variable que précédemment et dt est une variable de type DateTime. Ensuite pour pouvoir utiliser les informations contenues dans dt, il faut les sortir une par une : dt.Hour représente l'heure, dt.Min : les minutes et dt.Sec : les secondes.
Packtime▲
PackTime (dt, Heure);
Cette instruction est l'inverse de la précédente.
Exemple récapitulatif sur les dates et heures de fichiers▲
Vous pouvez télécharger le programme annoté FDATE.PAS :
Program
FDate;
Uses
Dos; {unité utilisée}
Var
f : File
;
Heure : LongInt
;
dt : DateTime;
Function
Format (w : Word
) : String
;
{ Convertit un word en chaine sur 2 caractères }
Var
s : String
;
Begin
{début de la fonction}
Str(w,s); {convertit w en chaine}
if
Length(s) = 1
then
s := '0'
+ s; {toujours sur 2 caractères}
Format := s; {la fonction FORMAT prend la valeur de s}
End
; {fin de la fonction}
BEGIN
{début du programme}
Assign(f,'c:\autoexec.bat'
); {la variable f est assignée au fichier indiqué}
{lecture de l'heure de dernière modification du fichier.
L'information correspondante est consignée dans la variable Heure}
GetFTime(f,Heure);
WriteLn(Heure); {écriture à l'écran de la valeur de cette variable}
UnpackTime(Heure,dt); {conversion de l'information vers dt}
WriteLn(Format(dt.Hour),':'
,Format(dt.Min),':'
,Format(dt.Sec));
END
. {fin du programme}