FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 933, dernière mise à jour : 28 septembre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- 6.1. Opérations sur les dates/heures (7)
- 6.2. Dates particulières (6)
Les deux principaux types de date sont TDate et TDateTime :
- TDate représente une date sous la forme AAAA, MM et JJ ;
- TDateTime représente la date et l'heure sous la forme AAAA, MM, JJ, HH, MM, SS, mSS.
La déclaration se fait sous la forme : VarDate1 = TDate ou VarDate2 = TDateTime.
Le type spécial TDate ou TDateTime représente pour sa partie entière le nombre de jours écoulés depuis le 30/12/1899 et pour sa partie fractionnaire le nombre d'heure depuis minuit (partie fractionnaire nulle pour TDate).
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | uses DateUtils; {pour les fonctions Tomorrow, Yesterday et IsToday} var MaDate01, MaDate02, MaDate03: TDate; MaDate11: TDateTime; begin MaDate01 := Date; {la fonction Date renvoie la date en cours} MaDate02 := Tomorrow; {la fonction Tomorrow renvoie le jour suivant de Date} MaDate03 := Yesterday; {la fonction Yesterday renvoie le jour précédent de Date} MaDate11 := now; {la fonction now renvoie la date et l'heure système} if IsToday(MaDate11) then {IsToday renvoie un boolean qui permet de contrôler si MaDate11 est la date en cours} ShowMessage('OK'); end; |
Les deux principaux types de time sont TTime et TDateTime.
TTime représente un temps sous la forme HH, MM, SS et mSec.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | var Temps1 : TTime; Temps2, TempsP : TDateTime; begin Temps1 := EncodeTime(12,30,25,0); {initialise Temps1 avec 12h 30mn 25 sec} ShowMessage(TimeToStr(Temps1)); TempsP := Time; {la fonction Time renvoie l'heure actuelle} ShowMessage(TimeToStr(TempsP)); Temps2 := Now; {même effet que Time} ShowMessage(TimeToStr(Temps2)); end; |
Pour affecter une date à une variable de type TDate ou TDateTime, il suffit d'utiliser la fonction EncodeDate (Year, Month, Day : Word) : TDateTime.
Pour récupérer les éléments d'une variable TDate, on utilise la procédure DecodeDate (Date : TDateTime; var Year, Month, Day : Word).
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | var MaDate: TDate; Jour, Mois, Annes: Word; begin {Jour, Mois et Annee doit être une date valide} {Pour encoder : } MaDate := EncodeDate(Annee,Mois,Jour); {Pour décoder : } DecodeDate(MaDate, Annee, Mois, Jour); end; |
Pour affecter un temps à une variable de type TTime ou TDateTime, il suffit d'utiliser la fonction EncodeTime.
Pour récupérer les éléments d'une variable TTime, on utilise la fonction DecodeTime.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | var MonHeure : TTime; Heure, Minute, Seconde, milliSec : Word; begin {Heure, Minute, Seconde et milliSec doivent être un temps valide} {Pour encoder} MonHeure := EncodeTime(Heure, Minute, Seconde, milliSec); ShowMessage(TimeToStr(MonHeure)); {Pour décoder} DecodeTime(MonHeure,Heure, Minute, Seconde, milliSec); end; |
Pour savoir si une date est valide, il suffit d'utiliser la fonction IsValidDate().
Il en va de même pour le temps en utilisant la fonction IsValideTime().
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | uses DateUtils; var DateOK : Boolean; Annee, Mois, Jour : Word; TimeOK : Boolean; Heure, Minute, Seconde, milliSec : Word; begin DateOK := IsValidDate(Annee, Mois, Jour); TimeOK := IsValidTime(Heure, Minute, Seconde, milliSec); end; |
Pour modifier l'heure et la date du PC il faut utiliser la fonction API SetSystemTime. Or cette fonction demande une heure absolue. La fonction suivante permet de mettre à l'heure le PC en fonction des décalages horaires et de l'heure d'été :
Code delphi : | Sélectionner tout |
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 | { Fonction de mise à l'heure } Function MiseHeure(DateHeure:TDateTime):Boolean; Var Infos :TSystemTime; Zone :TTimeZoneInformation; Retour :Integer; Begin { Recherche des information sur les décalages locaux } Result:=False; Retour:=GetTimeZoneInformation(Zone); { DateHeure étant en heure locale => ajout des décalages pour obtenir l'heure absolue } Case Retour Of TIME_ZONE_ID_UNKNOWN : DateHeure:=DateHeure+( Zone.Bias /(24*60)); TIME_ZONE_ID_STANDARD : DateHeure:=DateHeure+((Zone.Bias+Zone.StandardBias)/(24*60)); TIME_ZONE_ID_DAYLIGHT : DateHeure:=DateHeure+((Zone.Bias+Zone.DaylightBias)/(24*60)); Else Exit; End; { Ensuite, mise à l'heure du Pc } { Attention sous Windows NT/2000/XP l'utilisateur doit avoir les droits } { suffisants pour que ça fonctionne ! } Infos.wYear :=YearOf (DateHeure); Infos.wMonth :=MonthOf (DateHeure); Infos.wDayOfWeek :=DayOfWeek (DateHeure); Infos.wDay :=DayOf (DateHeure); Infos.wHour :=HourOf (DateHeure); Infos.wMinute :=MinuteOf (DateHeure); Infos.wSecond :=SecondOf (DateHeure); Infos.wMilliseconds :=MillisecondOf (DateHeure); Result:=SetSystemTime(Infos); End; |
Pour formater un type TDateTime en chaîne de caractères il faut utiliser la fonction FormatDateTime.
Code Delphi : | Sélectionner tout |
1 2 3 4 5 | var DateChaine: string; begin DateChaine := FormatDateTime('"Nous sommes le" dd/mm/yyyy", il est "hh:ss', Now); end; |
- yyyy : année sur quatre chiffres : 2005
- yy : année sur deux chiffres : 05
- mmmm : mois en clair : Janvier
- mmm : mois en abrégé : Jan
- mm : mois sur deux chiffres : 01
- m : mois sur un ou deux chiffres : 1
- dddd : jour en clair : Dimanche
- ddd : jour en abrégé : Dim
- dd : jour sur deux chiffres : 09
- d : jour sur un ou deux chiffres : 9
- hh : heure sur deux chiffres : 01
- h : heure sur un ou deux chiffres : 1
- nn : minute sur deux chiffres : 01
- n : minute sur un ou deux chiffres : 1
- ss : seconde sur deux chiffres : 01
- s : seconde sur un ou deux chiffres : 1
- z : millisecondes sans les préfixer d'un zéro (0 à 999)
- zzz : millisecondes en les préfixant d'un zéro (000 à 999)
Il arrive souvent dans un programme que l'on récupère une durée dans un entier sous forme de nombre de secondes (ou de minutes, heures…). Pour transformer en affichage classique HH:MM:SS il est possible d'effectuer des divisions et modulo mais il existe une méthode bien plus simple. Le format TDateTime de Delphi est un nombre flottant dont la partie entière est le nombre de jour, et la partie fractionnaire l'heure dans le jour sous forme d'une fraction de jour.
Ansi :
- 1/24 représente un heure
- 1/(24*60) représente un minute
- 1/(24*3600) représente un seconde
Sur ce principe on peut formater facilement un nombre de secondes :
Code Delphi : | Sélectionner tout |
TimeToStr(MonEntier/24/3600);
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes 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 © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.