Date et heure C ++
La bibliothèque standard C ++ ne fournit pas un type de date approprié. C ++ hérite des structures et des fonctions pour la manipulation de la date et de l'heure de C. Pour accéder aux fonctions et structures liées à la date et à l'heure, vous devez inclure le fichier d'en-tête <ctime> dans votre programme C ++.
Il existe quatre types liés au temps: clock_t, time_t, size_t, et tm. Les types - clock_t, size_t et time_t sont capables de représenter l'heure et la date du système sous la forme d'une sorte d'entier.
Le type de structure tm contient la date et l'heure sous la forme d'une structure C ayant les éléments suivants -
struct tm {
int tm_sec; // seconds of minutes from 0 to 61
int tm_min; // minutes of hour from 0 to 59
int tm_hour; // hours of day from 0 to 24
int tm_mday; // day of month from 1 to 31
int tm_mon; // month of year from 0 to 11
int tm_year; // year since 1900
int tm_wday; // days since sunday
int tm_yday; // days since January 1st
int tm_isdst; // hours of daylight savings time
}
Voici les fonctions importantes que nous utilisons lorsque nous travaillons avec la date et l'heure en C ou C ++. Toutes ces fonctions font partie de la bibliothèque standard C et C ++ et vous pouvez vérifier leur détail en utilisant la référence à la bibliothèque standard C ++ donnée ci-dessous.
Sr.Non | Fonction et objectif |
---|---|
1 | time_t time(time_t *time); Cela renvoie l'heure actuelle du système en nombre de secondes écoulées depuis le 1er janvier 1970. Si le système n'a pas d'heure, .1 est renvoyé. |
2 | char *ctime(const time_t *time); Cela renvoie un pointeur vers une chaîne de la forme jour mois année heures: minutes: secondes année \ n \ 0 . |
3 | struct tm *localtime(const time_t *time); Cela renvoie un pointeur vers le tm structure représentant l'heure locale. |
4 | clock_t clock(void); Cela renvoie une valeur qui se rapproche de la durée d'exécution du programme appelant. Une valeur de .1 est renvoyée si l'heure n'est pas disponible. |
5 | char * asctime ( const struct tm * time ); Cela renvoie un pointeur vers une chaîne contenant les informations stockées dans la structure pointée par l'heure convertie sous la forme: jour mois date heures: minutes: secondes année \ n \ 0 |
6 | struct tm *gmtime(const time_t *time); Cela renvoie un pointeur sur l'heure sous la forme d'une structure tm. L'heure est représentée en temps universel coordonné (UTC), qui est essentiellement le temps moyen de Greenwich (GMT). |
sept | time_t mktime(struct tm *time); Cela renvoie l'équivalent calendrier-temps de l'heure trouvée dans la structure pointée par l'heure. |
8 | double difftime ( time_t time2, time_t time1 ); Cette fonction calcule la différence en secondes entre time1 et time2. |
9 | size_t strftime(); Cette fonction peut être utilisée pour formater la date et l'heure dans un format spécifique. |
Date et heure actuelles
Supposons que vous souhaitiez récupérer la date et l'heure actuelles du système, sous forme d'heure locale ou de temps universel coordonné (UTC). Voici l'exemple pour obtenir le même résultat -
#include <iostream>
#include <ctime>
using namespace std;
int main() {
// current date/time based on current system
time_t now = time(0);
// convert now to string form
char* dt = ctime(&now);
cout << "The local date and time is: " << dt << endl;
// convert now to tm struct for UTC
tm *gmtm = gmtime(&now);
dt = asctime(gmtm);
cout << "The UTC date and time is:"<< dt << endl;
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
The local date and time is: Sat Jan 8 20:07:41 2011
The UTC date and time is:Sun Jan 9 03:07:41 2011
Formater l'heure à l'aide de struct tm
le tmLa structure est très importante lorsque vous travaillez avec la date et l'heure en C ou C ++. Cette structure contient la date et l'heure sous la forme d'une structure C comme mentionné ci-dessus. La plupart du temps, les fonctions liées utilisent la structure tm. Voici un exemple qui utilise diverses fonctions liées à la date et à l'heure et la structure tm -
En utilisant la structure dans ce chapitre, je suppose que vous avez une compréhension de base de la structure C et comment accéder aux membres de la structure à l'aide de la flèche -> opérateur.
#include <iostream>
#include <ctime>
using namespace std;
int main() {
// current date/time based on current system
time_t now = time(0);
cout << "Number of sec since January 1,1970 is:: " << now << endl;
tm *ltm = localtime(&now);
// print various components of tm structure.
cout << "Year:" << 1900 + ltm->tm_year<<endl;
cout << "Month: "<< 1 + ltm->tm_mon<< endl;
cout << "Day: "<< ltm->tm_mday << endl;
cout << "Time: "<< 5+ltm->tm_hour << ":";
cout << 30+ltm->tm_min << ":";
cout << ltm->tm_sec << endl;
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Number of sec since January 1,1970 is:: 1588485717
Year:2020
Month: 5
Day: 3
Time: 11:31:57