FAQ C++ BuilderConsultez toutes les FAQ

Nombre d'auteurs : 60, nombre de questions : 670, dernière mise à jour : 21 novembre 2010  Ajouter une question

 

Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum C++ Builder de developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, contactez pottiez

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe C++ Builder de Developpez.

Commentez cette FAQ : Commentez


SommaireGestion du temps (14)
précédent sommaire suivant
 

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.

Ces types disposent d'une propriété Val qui est un double définit comme suit : sa partie entière correspond au nombre de jours écoulés depuis le 30/12/1899, sa partie décimale (nulle dans le cas d'un TDate) correspond au nombre d'heures (ramené à 24) depuis minuit.

Pour bénéficier des fonctions et méthodes spécifiques à ces types, il vous faudra inclure DateUtils.hpp.

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
TDate date1, date2, date3; 
TDateTime date4; 
  
date1 = Yesterday(); // renvoie le jour précédent 
date2 = Date(); // renvoie le jour actuel 
date3 = Tomorrow(); // renvoie le jour suivant 
date4 = Now(); // renvoie la date et heure courante
Pour une gestion du temps, vous pouvez utiliser le type TTime qui représente un temps sous la forme HH, MM, SS et mSec.

Code c++ : Sélectionner tout
1
2
TTime time = EncodeTime(15, 10, 54, 0); 
// time vaut 15h10'54"

Mis à jour le 27 octobre 2004 psl Ricky81

Pour affecter une date à une variable de type TDate ou TDateTime, vous pouvez utiliser la fonction EncodeDate.

Code c++ : Sélectionner tout
1
2
TDate date; 
date = EncodeDate(annee, mois, jour); // les paramètres sont des entiers
Pour extraire des informations à partir d'une date, il suffit d'utiliser la fonction DecodeDate : le code suivant initialise les variables annee, mois et jour.

Code c++ : Sélectionner tout
1
2
3
WORD annee, mois, jour; 
date = Date(); 
DecodeDate(date, annee, mois, jour);
Des fonctions similaires sont disponibles pour la gestion du temps :

Code c++ : Sélectionner tout
1
2
TDateTime __fastcall EncodeTime(Word Hour, Word Min, Word Sec, Word MSec); 
void __fastcall DecodeTime(const System::TDateTime DateTime, Word &Hour, Word &Min, Word &Sec, Word &MSec);
Enfin, à noter les fonctions EncodeDateTime et DecodeDateTime pour la gestion simultanée de la date et de l'heure.

Mis à jour le 27 octobre 2004 psl Ricky81

Pour savoir si une date est valide, utilisez la fonction IsValidDate.
Pour le cas d'un temps, utilisez la fonction IsValidTime.

Code c++ : Sélectionner tout
1
2
3
bool bonneDate, bonneHeure; 
bonneDate = IsValidDate(annee, mois, jour); 
bonneHeure = IsValidTime(heure, minute, seconde, milliseconde);
Il s'agit ici de vérifier qu'à partir des différentes valeurs constituant la date/heure, on construit bien une date/heure valide.

Mis à jour le 27 octobre 2004 Ricky81

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 c++ : 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
bool __fastcall miseHeure(TDateTime dateHeure) 
{ 
   TSystemTime *infos = new TSystemTime; 
   TTimeZoneInformation *zone = new TTimeZoneInformation; 
   int retour; 
  
   // recherche des informations sur les décalages locaux 
   retour = GetTimeZoneInformation(zone); 
   // passage à l'heure absolue 
   switch (retour) 
   { 
      case TIME_ZONE_ID_UNKNOWN : 
         dateHeure = dateHeure + (zone->Bias / (24.*60.)); 
      case TIME_ZONE_ID_STANDARD : 
         dateHeure = dateHeure + ((zone->Bias + zone->StandardBias) / (24.*60.)); 
      case TIME_ZONE_ID_DAYLIGHT : 
         dateHeure = dateHeure + ((zone->Bias + zone->DaylightBias) / (24.*60.)); 
   } 
   // mise à l'heure du Pc (les droits sont nécessaires) 
   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); 
  
   return SetSystemTime(infos); 
}
Sans oublier un :

Code c++ : Sélectionner tout
#include <DateUtils.hpp>

Mis à jour le 27 octobre 2004 Nono40 Ricky81

Vous pouvez utiliser pour cela la méthode GetTickCount, qui vous renvoie un entier, en millisecondes, correspondant au temps écoulé depuis que l'ordinateur est allumé.

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
void TestGetTickCount() 
{ 
    int start, stop, lap;     //déclaration d'entier pour récupérer les valeurs renvoyées par GetTickCount() 
    start = GetTickCount();    //start contient alors la durée écoulé, en millisecondes, depuis que l'ordinateur est allumé 
    lap = GetTickCount() - start;      //utilisation de la variable lap pour un temps intermédiaire 
    stop = GetTickCount() - start;    //stop contient le temps écoulé depuis l'affectation de start 
}

Mis à jour le 6 décembre 2006 doudoustephane

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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 © 2020 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.