GMTIME |
Demande le temps |
---|---|
Langage C | time.h |
Syntaxe
struct tm *gmtime(const time_t *sec) |
Paramètres
Nom | Description |
---|---|
sec | Ce paramètre permet d'indiquer les secondes |
Description
Cette fonction permet de convertir des secondes en date et heure.
Algorithme
MODULE GMTIME(timestamp) SI timestamp est NULL ALORS * Horodatage invalide RETOURNE NULL FIN SI * Calcul des secondes, minutes, heures, jours,... seconds_per_minute ← 60 seconds_per_hour ← 3600 seconds_per_day ← 86400 days_per_year ← 365 leap_year_correction ← 0 * Pour gérer les années bissextiles year ← 1970 remaining_seconds ← timestamp * Calcul de l'année BOUCLE FAIRE TANT QUE remaining_seconds ≥ (days_per_year + leap_year_correction) * seconds_per_day FAIRE remaining_seconds ← remaining_seconds - (days_per_year + leap_year_correction) x seconds_per_day year ← year + 1 SI is_leap_year(year) ALORS leap_year_correction ← 1 SINON leap_year_correction ← 0 FIN SI FIN BOUCLE FAIRE TANT QUE * Calcul du jour de l'année day_of_year ← remaining_seconds remaining_seconds ← remaining_seconds modulo seconds_per_day * Calcul de l'heure, des minutes et des secondes hour ← remaining_seconds * seconds_per_hour remaining_seconds ← remaining_seconds modulo seconds_per_hour minute ← remaining_seconds second ← remaining_seconds modulo seconds_per_minute * Conversion du jour de l'année en mois et jour month, day_of_month = calculate_month_and_day(day_of_year, year) * Construire la structure tm tm ← struct_tm( tm_sec ← second, tm_min ← minute, tm_hour ← hour, tm_mday ← day_of_month, tm_mon ← month, tm_year ← year - 1900, tm_wday ← calculate_weekday(year, month, day_of_month), tm_yday ← day_of_year, tm_isdst ← 0 * Toujours 0 pour UTC ) RETOURNE tm |
Remarques
- Conversion d'un horodatage en UTC : La fonction gmtime() convertit une valeur temporelle brute (de type time_t) représentant le nombre de secondes écoulées depuis le 1er janvier 1970 (l'époque Unix) en une structure tm exprimant le temps en UTC (Temps Universel Coordonné).
- Retour sous forme de structure tm : Le résultat est une structure tm contenant des champs détaillés comme l'année, le mois, le jour, l'heure, la minute, et la seconde, mais aussi le jour de la semaine et le jour de l'année. Ces données permettent une manipulation fine des dates et heures.
- Dépendance à une variable statique : gmtime() retourne un pointeur vers une structure tm statique interne. Cela signifie que chaque nouvel appel à gmtime() écrase les données précédemment retournées. Si ces données doivent être préservées, elles doivent être copiées manuellement.
- Compatibilité avec UTC uniquement : Contrairement à la fonction localtime(), ajustant le résultat pour refléter le fuseau horaire local, gmtime() fournit toujours une représentation en UTC. Elle est donc idéale pour des applications indépendantes du fuseau horaire.
- Gestion des erreurs : Si le paramètre fourni à gmtime() est invalide (par exemple, un pointeur NULL ou une valeur non représentable), la fonction retourne NULL. Il est essentiel de vérifier le retour avant d'utiliser la structure résultante.
- Utilité dans des systèmes distribués : En raison de son utilisation exclusive d'UTC, gmtime() est particulièrement utile dans des contextes où une synchronisation horaire est requise entre systèmes géographiquement dispersés, comme dans les applications réseau.
- Non sécurisée pour les applications multi-processus léger : Comme gmtime() utilise une structure statique interne, elle n'est pas sûre dans des environnements multi-processus léger. Pour une alternative thread-safe, il est recommandé d'utiliser gmtime_r(), disponible dans les systèmes conformes à POSIX.
- Limites liées au type time_t : Les résultats de gmtime() dépendent de la largeur du type time_t. Sur certains systèmes, time_t est limité à 32 bits, ce qui entraîne des problèmes au-delà de l'an 2038 (le fameux bogues de l'an 2038). Sur des systèmes modernes, time_t est généralement étendu à 64 bits, éliminant cette limite.
Voir également
Langage de programmation - C - Référence de procédures et fonctions - asctime
Langage de programmation - C - Référence de procédures et fonctions - ctime
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 - time
Langage de programmation - C++ - Référence de procédures et fonctions - gmtime
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 135.
Dernière mise à jour : Mardi, le 28 juillet 2015