Bibliothèque standard C -<time.h>
Introduction
time.hLe fichier d'en-tête définit quatre types de variables, deux macros et diverses fonctions pour manipuler les dates et les heures.
<time.h>Il s'agit d'un fichier d'en-tête de la bibliothèque standard C qui fournit des fonctions et des types pour le traitement et la manipulation des dates et des heures. Les fonctions de ce fichier d'en-tête sont utilisées pour obtenir l'heure actuelle, définir l'heure, formater l'heure, calculer les écarts de temps, etc.
Constantes et macros
| Constantes/Macros | Description |
|---|---|
CLOCKS_PER_SEC | Nombre de cycles d'horloge par seconde. |
NULL | Constante de pointeur nul. |
TIME_UTC | Représente l'heure UTC (C11). |
Variables de la bibliothèque
Voici les types de variables définis dans le fichier d'en-tête time.h :
| Numéro de série | Variable & Description |
|---|---|
| 1 | size_t Est un type entier non signé, qui est le résultat du mot-clésizeof. |
| 2 | clock_t C'est un type adapté au stockage du temps processeur. |
| 3 | time_t est C'est un type adapté au stockage du temps calendaire. |
| 4 | struct tm C'est une structure utilisée pour stocker l'heure et la date. |
La structure tm est définie comme suit :
struct tm {
int tm_sec; /* 秒,范围从 0 到 59 */
int tm_min; /* 分,范围从 0 到 59 */
int tm_hour; /* 小时,范围从 0 到 23 */
int tm_mday; /* 一月中的第几天,范围从 1 到 31 */
int tm_mon; /* 月,范围从 0 到 11 */
int tm_year; /* 自 1900 年起的年数 */
int tm_wday; /* 一周中的第几天,范围从 0 到 6 */
int tm_yday; /* 一年中的第几天,范围从 0 到 365 */
int tm_isdst; /* 夏令时 */
};
Macros de bibliothèque
Voici les macros définies dans le fichier d'en-tête time.h :
| Numéro de série | Macro & Description |
|---|---|
| 1 | NULL Cette macro est la valeur d'une constante de pointeur nul. |
| 2 | CLOCKS_PER_SEC Cette macro représente le nombre de tops d'horloge du processeur par seconde. |
Fonctions de bibliothèque
Voici les fonctions définies dans le fichier d'en-tête time.h :
| Numéro de série | Fonction & Description |
|---|---|
| 1 | char *asctime(const struct tm *timeptr) Renvoie un pointeur vers une chaîne représentant la date et l'heure de la structure timeptr. |
| 2 | clock_t clock(void) Renvoie la quantité de temps processeur utilisée depuis le début de l'exécution du programme (généralement le démarrage du programme). |
| 3 | char *ctime(const time_t *timer) Renvoie une chaîne représentant l'heure locale, en fonction du paramètre timer. |
| 4 | double difftime(time_t time1, time_t time2) Renvoie le nombre de secondes de différence entre time1 et time2 (time1-time2). |
| 5 | struct tm *gmtime(const time_t *timer) La valeur de timer est décomposée en une structure tm et exprimée en temps universel coordonné (UTC), également appelé heure moyenne de Greenwich (GMT). |
| 6 | struct tm *localtime(const time_t *timer) La valeur de timer est décomposée en une structure tm et exprimée dans le fuseau horaire local. |
| 7 | time_t mktime(struct tm *timeptr) Convertit la structure pointée par timeptr en une valeur time_t basée sur le fuseau horaire local. |
| 8 | size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) Formate l'heure représentée par la structure timeptr selon les règles de formatage définies dans format, et la stocke dans str. |
| 9 | time_t time(time_t *timer) Calcule l'heure calendaire actuelle et l'encode au format time_t. |
| 10 | int timespec_get(struct timespec *ts, int base); Obtient l'heure actuelle (C11). |
Exemple
Ce qui suit utilise<time.h>Exemples de quelques fonctions dans
Obtenir l'heure actuelle :
Exemple
#include <time.h>
int main() {
time_t current_time;
time(¤t_time);
printf("Current time: %s", ctime(¤t_time));
return 0;
}
Formater l'heure :
Exemple
#include <time.h>
int main() {
time_t current_time;
struct tm *time_info;
char buffer[80];
time(¤t_time);
time_info = localtime(¤t_time);
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", time_info);
printf("Heure formatée : %s\n", buffer);
return 0;
}
Calculer la différence de temps :
Exemple
#include <time.h>
int main() {
time_t start_time, end_time;
double time_diff;
time(&start_time);
// Simuler une opération chronophage
for (int i = 0; i < 100000000; i++);
time(&end_time);
time_diff = difftime(end_time, start_time);
printf("Différence de temps : %.2f secondes\n", time_diff);
return 0;
}
Utilisationstruct tm:
Exemple
#include <time.h>
int main() {
struct tm time_info;
char buffer[80];
time_info.tm_year = 2024 - 1900; // L'année est calculée à partir de 1900
time_info.tm_mon = 5; // juin, plage de 0 à 11
time_info.tm_mday = 12;
time_info.tm_hour = 12;
time_info.tm_min = 0;
time_info.tm_sec = 0;
time_info.tm_isdst = -1; // Détermine automatiquement s'il s'agit de l'heure d'été
mktime(&time_info);
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &time_info);
printf("Heure personnalisée : %s\n", buffer);
return 0;
}
Notes
- Utilisation
localtimeetgmtimeLorsque, le pointeur renvoyé pointe versstruct tmLa structure est stockée statiquement, et chaque appel écrase le contenu précédent. - Utilisation
mktimeLorsque vous utilisez la fonction, vous devez vous assurerstruct tmLes différents champs dans sont valides. - Utilisation
strftimeLors de l'exécution du formatage de l'heure, assurez-vous que le tampon de destination est suffisamment grand pour éviter un dépassement de tampon.
En comprenant et en utilisant<time.h>Les fonctions fournies facilitent la manipulation des dates et des heures, permettant d'écrire des programmes C plus riches en fonctionnalités et plus efficaces.