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
- 7.1. Opérations sur les dates/heures (5)
- 7.2. Dates particulières (4)
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 |
Code c++ : | Sélectionner tout |
1 2 | TTime time = EncodeTime(15, 10, 54, 0); // time vaut 15h10'54" |
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 |
Code c++ : | Sélectionner tout |
1 2 3 | WORD annee, mois, jour; date = Date(); DecodeDate(date, annee, mois, jour); |
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); |
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); |
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); } |
Code c++ : | Sélectionner tout |
#include <DateUtils.hpp>
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 } |
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 çaLes 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 © 2024 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.