Décoder les informations d'un TDateTime
Il existe une structure qui permet de stocker la date, en Delphi, le TDateTime, mais pour en obtenir les informations, les fonctions TimeToStr, DateToStr et FormatDateTime sont parfois insuffisantes. En effet, si on veut obtenir l'intervalle entre deux TDateTime en secondes, cette solution est valable tant que le nombre de secondes est inférieur à 59, mais au dela FormatDateTime renvoie 00. Cependant, il existe une fonction, appelée DecodeTime, qui permet d'obtenir toutes les informations souhaitées
Voici par exemple la fonction qui renvoie le nombre de secondes :
Nombre de secondes
function Seconds(Time: TDateTime): integer; var H, M, S, MS: word; begin DecodeTime(Time, H, M, S, MS); result := H * 3600 + M * 60 + S; end;
Le nombre de millisecondes :
Millisecondes
function MilliSeconds(Time: TDateTime): integer; var H, M, S, MS: word; begin DecodeTime(Time, H, M, S, MS); result := H * 3600000 + M * 60000 + S * 1000 + MS; end;
Le nombre de minutes :
Minutes
function Minutes(Time: TDateTime): integer; var H, M, S, MS: word; begin DecodeTime(Time, H, M, S, MS); result := H * 60 + M; end;
Et enfin le nombre d'heures :
Heures
function Hours(Time: TDateTime): integer; var H, M, S, MS: word; begin DecodeTime(Time, H, M, S, MS); result := H; end;
Il ne vous reste plus qu'à déclarer une variable de type TDateTime, et à lui assigner la valeur "now" à la création de l'application :
Différence de temps, en secondes
interface ... var MyTime: TDateTime; implementation ... procedure TForm1.FormCreate(Sender: TObject); begin MyTime := Now; end; // Vous pouvez maintenant gérer dans un TTimer ou // un évennement OnIdle l'affichage de la date: procedure TForm1.Timer1Timer(Sender: TObject); begin label1.caption := IntToStr(Seconds(Now - MyTime)); end;
3 requête(s) SQL executée(s) en 0.001 Secs - Temps total de génération de la page : 0.007 Secs
