Manipulation avec FormatDateTime [Résolu]

Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- 26 janv. 2008 à 12:48 - Dernière réponse :
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
- 27 janv. 2008 à 14:46
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.
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
- 26 janv. 2008 à 20:34
3
Merci
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'

Merci japee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de japee
Meilleure réponse
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
- 27 janv. 2008 à 11:30
3
Merci
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 !!!

Merci japee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de japee
Meilleure réponse
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
- 27 janv. 2008 à 12:19
3
Merci
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'

Merci japee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de japee
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- 26 janv. 2008 à 13:04
0
Merci
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é
Commenter la réponse de mighty_warrior
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 26 janv. 2008 à 13:08
0
Merci
Salut,

Je ne sais pas si ça t'aidera, mais un bon reflexe pour FormatDateTime et de télécharger le source de Japee ici.
Commenter la réponse de Caribensila
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 26 janv. 2008 à 13:16
0
Merci
... 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.
Commenter la réponse de Caribensila
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
- 26 janv. 2008 à 17:15
0
Merci
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
Commenter la réponse de HAFTARIFOUAD
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- 27 janv. 2008 à 09:42
0
Merci
merci pour toute cet aide, je vais étudier tout ça et je vous tiens au courant

encore merci
Commenter la réponse de mighty_warrior
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- 27 janv. 2008 à 09:57
0
Merci
excusez moi mais coment se déclare la fonction IncSecond? existe t-il une fonction pour incrémentre les minutes, les heures?

merci
Commenter la réponse de mighty_warrior
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- 27 janv. 2008 à 11:28
0
Merci
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...
Commenter la réponse de mighty_warrior
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- 27 janv. 2008 à 11:46
0
Merci
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.
Commenter la réponse de mighty_warrior
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- 27 janv. 2008 à 13:03
0
Merci
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.
Commenter la réponse de mighty_warrior
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
- 27 janv. 2008 à 14:46
0
Merci
Bah, j'étais pas réellement agacé.
J'ai juste froncé un sourcil au caZ'où...
Commenter la réponse de japee

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.