ASCTIME |
ASCII Time |
---|---|
Langage C++ | ctime (time.h) |
Syntaxe
char *asctime(struct tm *h); |
Paramètres
Nom | Description | |||
---|---|---|---|---|
h | Ce paramètre permet d'indiquer la structure contenant les informations de temps à traiter : | |||
Nom | Type de données | Description | ||
tm_sec | int | Ce champ permet d'indiquer les secondes, soit une valeur entre l'intervalle 0 et 61. | ||
tm_min | int | Ce champ permet d'indiquer les minutes, soit une valeur entre l'intervalle 0 et 59. | ||
tm_hour | int | Ce champ permet d'indiquer les heures, soit une valeur entre l'intervalle 0 et 23. | ||
tm_mday | int | Ce champ permet d'indiquer le jour du mois, soit une valeur entre l'intervalle 1 et 31. | ||
tm_mon | int | Ce champ permet d'indiquer le mois de l'année : | ||
Valeur | Description | |||
0 | Cette valeur permet d'indiquer le mois de Janvier. | |||
1 | Cette valeur permet d'indiquer le mois de Février. | |||
2 | Cette valeur permet d'indiquer le mois de Mars. | |||
3 | Cette valeur permet d'indiquer le mois d'Avril. | |||
4 | Cette valeur permet d'indiquer le mois de Mai. | |||
5 | Cette valeur permet d'indiquer le mois de Juin. | |||
6 | Cette valeur permet d'indiquer le mois de Juillet. | |||
7 | Cette valeur permet d'indiquer le mois d'Août. | |||
8 | Cette valeur permet d'indiquer le mois de Septembre. | |||
9 | Cette valeur permet d'indiquer le mois d'Octobre. | |||
10 | Cette valeur permet d'indiquer le mois de Novembre. | |||
11 | Cette valeur permet d'indiquer le mois de Décembre. | |||
tm_year | int | Ce champ permet d'indiquer l'année après 1900. | ||
tm_wday | int | Ce champ permet d'indiquer le jour de la semaine : | ||
Valeur | Description | |||
0 | Cette valeur permet d'indiquer le Dimanche. | |||
1 | Cette valeur permet d'indiquer le Lundi. | |||
2 | Cette valeur permet d'indiquer le Mardi. | |||
3 | Cette valeur permet d'indiquer le Mercredi. | |||
4 | Cette valeur permet d'indiquer le Jeudi. | |||
5 | Cette valeur permet d'indiquer le Vendredi. | |||
6 | Cette valeur permet d'indiquer le Samedi. | |||
tm_yday | int | Ce champ permet d'indiquer le jour de l'année, soit une valeur entre l'intervalle 0 et 365. | ||
tm_isdst | int | Ce champ permet d'indiquer le jour d'été ou avancé. |
Description
Cette fonction permet de convertir l'heure en chaîne de caractères.
Remarques
- La fonction asctime() renvoie un pointeur sur une chaîne de caractères contenant les informations entreposées dans la structure pointée par h convertie sous le format suivante :
- Le pointeur de structure passé à la fonction asctime() est généralement obtenu à partir des fonctions localtime() ou gmtime().
- Le tampon utilisé par asctime() pour contenir la chaîne de caractères de sortie formatée est un tableau de caractères alloué statiquement et est écrasé à chaque appel de la fonction. Si vous souhaitez enregistrer le contenu de la chaîne de caractères, vous devez la copier ailleurs.
- Définition et utilité : La fonction asctime est utilisée pour convertir une structure de type tm (représentant une date et une heure) en une chaîne de caractères de type const char*. Elle renvoie la date et l'heure dans un format lisible, par exemple "Tue Jan 30 14:20:51 2025". Elle est définie dans la bibliothèque <ctime>.
- Format de retour : Le format de la chaîne renvoyée par asctime est fixé et suit un modèle spécifique : "Weekday Month Day Hour:Minute:Second Year". Par exemple, pour un moment donné, la fonction pourrait renvoyer "Tue Jan 30 14:20:51 2025", avec des valeurs précises pour chaque composante de la date et de l'heure. Ce format est standardisé.
- Argument de la fonction : Le paramètre de asctime est un pointeur vers une structure tm, généralement obtenue à partir de fonctions comme localtime ou gmtime. La structure tm contient les informations suivantes : année, mois, jour, heure, minute, seconde, etc. Si cette structure n'est pas correctement initialisée, les résultats peuvent être imprévisibles.
- Dépendance au fuseau horaire : La fonction asctime utilise les informations locales concernant le fuseau horaire. Si tu veux obtenir l'heure en temps universel coordonné (UTC), il est nécessaire d'utiliser gmtime pour initialiser la structure tm, car localtime tiendra compte du fuseau horaire local de la machine.
- Retour de pointeur sur une zone statique : Un aspect important à noter est que asctime renvoie un pointeur vers une zone mémoire statique. Cela signifie que chaque appel à asctime écrasera la chaîne précédente, ce qui peut poser des problèmes si la chaîne est utilisée après un autre appel à asctime. Il est donc conseillé de ne pas conserver cette chaîne au-delà de l'appel suivant.
- Problèmes de sécurité et non-sécurité des tampons : Comme de nombreuses fonctions de la bibliothèque C, asctime peut poser des problèmes de sécurité, car elle modifie une zone mémoire statique partagée. Cela peut entraîner des erreurs si plusieurs processus léger ou fonctions tentent de l'utiliser simultanément. Pour éviter cela, il est recommandé de ne pas utiliser cette fonction dans des contextes multi-processus léger sans protection supplémentaire.
- Utilisation dans le déboguage et la journalisation&nb;: La fonction asctime est souvent utilisée pour la journalisation et le déboguage, car elle permet d'afficher la date et l'heure sous une forme facilement lisible. Cela est particulièrement utile dans les journaux de bord d'applications pour marquer les événements ou les erreurs avec des horodatages clairs.
- Limites et alternatives : Bien que asctime soit simple à utiliser, elle est limitée par son format de sortie rigide et la dépendance à une zone mémoire statique. Dans des applications modernes où la flexibilité et la sécurité sont des priorités, il peut être préférable d'utiliser des alternatives comme strftime permettant de définir un format personnalisé et de travailler avec des tampons alloués dynamiquement.
jourdesemaine mois jourdumois heures:minutes:secondes annee\n\0 |
Exemple
Voici un exemple montrant le résultat d'une date du 1er janvier 1970 :

- #include <iostream>
- #include <ctime>
-
- int main()
- {
- struct tm timeinfo;
- timeinfo.tm_sec = 59;
- timeinfo.tm_min = 59;
- timeinfo.tm_hour = 23;
- timeinfo.tm_mday = 1;
- timeinfo.tm_mon = 1;
- timeinfo.tm_year = 70;
- timeinfo.tm_wday = 0;
- timeinfo.tm_yday = 0;
- timeinfo.tm_isdst = 0;
- std::cout << "La date et l'heure : " << asctime(&timeinfo) << std::endl;
- return 0;
- }
on obtiendra le résultat suivant :
La date et l'heure : Sun Feb 01 23:59:59 1970Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - difftime
Langage de programmation - C++ - Référence de procédures et fonctions - localtime
Langage de programmation - C++ - Référence de procédures et fonctions - mktime
Langage de programmation - C++ - Référence de procédures et fonctions - time
Langage de programmation - C - Référence de procédures et fonctions - asctime
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 730.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 30.