Manipulation avec FormatDateTime [Résolu]

Signaler
Messages postés
123
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
-
Bonjour,

Ca fait depuis ce matin que je me creuse la tête dans mon programme et Je me suis demandé si il était possible de récupérer la valeur correspondant aux minutes (mm) de ce code : label1.caption := FormatDateTime('hh:mm:ss',time); et la charger dans une variable integer (de même pour les secondes et les heures en fait).

Merci.

12 réponses

Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
Salut,

Dans ton code :

Label1.Caption := FormatDateTime('hh:mm:ss', time);

FormatDateTime est une fonction qui retourne une valeur de type TDateTime (ou TDate, ou TTime) sous forme d'une chaîne.
Time renvoie l'heure en cours sous forme de TDateTime.
Il te faut incrémenter time avec une de ces fonctions fournies gracieusement par Delphi à partir de la version 5 : IncMilliSecond, IncSecond, etc...

Un exemple :

var
  ATime: TTime;

  ATime := IncSecond(ATime, 10); // tu ajoutes 10 secondes à ATime
  Label1.Caption := TimeToStr(ATime);
  // ou bien
  Label1.Caption := FormatDateTime('hh:mm:ss', ATime);

Voir l'aide en ligne (touche F1) pour plus de détails.

Bonne prog'
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
Je viens de te donner un exemple...
(au fait il faut déclarer DateUtils dans les uses)

Répété 348 299 fois au moins sur ce forum (+ 1 dans mon post plus haut) :
pour étudier une routine Delphi que tu ne connais pas (ça arrive), il faut mettre le mot en surbrillance et presser la TOUCHE F1 !!!
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
Houlala...

Je te donne un exemple très concret.
Sur ton Form :
- 2 labels,
- 1 button.

Le code :

uses DateUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
  ATime: TTime;  // une variable de type TTime
begin
  ATime := Now;  // tu affectes une valeur, Now par exemple
  Label1.Caption := FormatDateTime('hh:mm:ss', ATime);
  //Label1.Caption := TimeToStr(ATime);  // <- plus simple
  ATime := IncSecond(ATime, 20); // tu ajoutes 20 secondes à ATime
  Label2.Caption := FormatDateTime('hh:mm:ss', ATime);
  //Label2.Caption := TimeToStr(ATime);  // <- plus simple
end;

Bonne prog'
Messages postés
123
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
9 février 2010

Excusez moi mais je me suis mal exprimé, ce n'est pas la récupération de la valeur qui me pose probléme mais c'est le fait d'additionner une valeur à FormatDateTime pour par exemple ajouter 10 secondes a un compteur.

encore désolé
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
... sinon,

type TDateTime = type Double;



Et la partie fractionnaire reflète la fraction d'une journée de 24 heures indépendamment du signe de la valeur TDateTime.
Par exemple, 6:00 am le 29/12/1899 est –1.25, et non –1 +0.25,ce qui reviendrait à–0.75.
Il n'existe pas de valeur TDateTime entre –1 et 0.
Messages postés
256
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
6 janvier 2011

Salut tt le monde ;-) voilà une petite idée à vous proposer

var DateEtHeure : TSystemTime;

begin

  GetSystemTime(DateEtHeure); // récupère la date et 'heure système (GMT ?)

  Edit1.Text:=IntToStr(DateEtHeure.wYear);<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>

  Edit2.Text:=IntToStr(DateEtHeure.wMonth);

  Edit3.Text:=IntToStr(DateEtHeure.wDayOfWeek);

  Edit4.Text:=IntToStr(DateEtHeure.wDay);

  Edit5.Text:=IntToStr(DateEtHeure.wHour); // heure système

  Edit6.Text:=IntToStr(DateEtHeure.wMinute);

  Edit7.Text:=IntToStr(DateEtHeure.wSecond);

  Edit8.Text:=IntToStr(DateEtHeure.wMilliseconds);

  Edit9.Text:=IntToStr(DateEtHeure.wHour+EcartHeures); // heure réelle

end;

Je pense que c'est claire, bonne chance et bonne prog.
haftari.fouad
Messages postés
123
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
9 février 2010

merci pour toute cet aide, je vais étudier tout ça et je vous tiens au courant

encore merci
Messages postés
123
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
9 février 2010

excusez moi mais coment se déclare la fonction IncSecond? existe t-il une fonction pour incrémentre les minutes, les heures?

merci
Messages postés
123
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
9 février 2010

le probléme c'est que quand je compile j'ai l'éreur: "Identificateur non déclaré:'incsecond'

sinon j'ai trouver les fonction pour incrémentre les minutes et les heures.

si quelqu'un peut m'aider...
Messages postés
123
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
9 février 2010

je l'ai déclarer avec ceci: function IncSecond(const AValue: TDateTime; const ANumberOfSeconds: Int64 = 1): TDateTime;

mais le probléme c'est que l'heure indiquée avec le code fourni par Japee est 00:00:00 .....il est passé où l'écart de 10 secondes?

remarquez j'ai peut étre mal codé mon prog donc le voici:

var
  Form1: TForm1;
  ATime: TTime;

implementation

{$R *.dfm}
function IncSecond(const AValue: TDateTime; const ANumberOfSeconds: Int64 = 1): TDateTime;
begin
ATime := IncSecond(ATime, 10); // tu ajoutes 10 secondes à ATime
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := FormatDateTime('hh:mm:ss', ATime);
end;

end.

si quelqu'un sait le pourquoi du comment qu'il me fasse signe merci.
Messages postés
123
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
9 février 2010

merci beaucoup et encore désolé (pour la 348 301éme répétition) je sait que c'est agassant. Il faut dire qu'avec DateUtils dans les uses ça marche tout de suite mieux.
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
Bah, j'étais pas réellement agacé.
J'ai juste froncé un sourcil au caZ'où...