Manipulation avec FormatDateTime [Résolu]

mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 26 janv. 2008 à 12:48 - Dernière réponse : japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention
- 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 

13 réponses

Répondre au sujet
japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention - 26 janv. 2008 à 20:34
+3
Utile
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'
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de japee
japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention - 27 janv. 2008 à 11:30
+3
Utile
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 !!!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de japee
japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention - 27 janv. 2008 à 12:19
+3
Utile
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'
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de japee
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 26 janv. 2008 à 13:04
0
Utile
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
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 26 janv. 2008 à 13:08
0
Utile
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
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 26 janv. 2008 à 13:16
0
Utile
... 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
HAFTARIFOUAD 298 Messages postés mercredi 5 septembre 2007Date d'inscription 6 janvier 2011 Dernière intervention - 26 janv. 2008 à 17:15
0
Utile
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 27 janv. 2008 à 09:42
0
Utile
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 27 janv. 2008 à 09:57
0
Utile
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 27 janv. 2008 à 11:28
0
Utile
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 27 janv. 2008 à 11:46
0
Utile
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 27 janv. 2008 à 13:03
0
Utile
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
japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention - 27 janv. 2008 à 14:46
0
Utile
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.