IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours de Turbo Pascal 7

Cours de Turbo Pascal 7


précédentsommairesuivant

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. A 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

 
Sélectionnez
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

 
Sélectionnez
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

 
Sélectionnez
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

 
Sélectionnez
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écapulatif sur la date et l'heure système

Vous pouvez télécharger le programme annoté et explicatif DATE.PAS :

 
Sélectionnez
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 chaîne sur 2 caractères }
Var s : String;
Begin {début de la fonction}
  Str(w,s); {convertit w en chaîne}
  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

 
Sélectionnez
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

 
Sélectionnez
SetFTime (f, Heure);

Vous l'aurez deviné, c'est la réciproque de l'instruction GetFTime.

Unpacktime

 
Sélectionnez
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

 
Sélectionnez
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 :

 
Sélectionnez
Program FDate;

Uses
  Dos; {unité utilisée}

Var 
  f : File;
  Heure : LongInt;
  dt : DateTime;
  
Function Format (w : Word) : String;
{ Convertit un word en chaîne sur 2 caractères }
Var 
  s : String;
Begin {début de la fonction}
  Str(w,s); {convertit w en chaîne}
  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}

précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2001-2013 Hugo Etievant. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.