Namespaces
Variants

localtime, localtime_r, localtime_s

From cppreference.net
Défini dans l'en-tête <time.h>
struct tm * localtime ( const time_t * timer ) ;
(1)
struct tm * localtime_r ( const time_t * timer, struct tm * buf ) ;
(2) (depuis C23)
struct tm * localtime_s ( const time_t * restrict timer, struct tm * restrict buf ) ;
(3) (depuis C11)
1) Convertit le temps donné depuis l'époque (une valeur time_t pointée par timer ) en temps calendaire, exprimé en heure locale, dans le format struct tm . Le résultat est stocké dans un stockage statique et un pointeur vers ce stockage statique est renvoyé.
2) Identique à (1) , sauf que la fonction utilise le stockage fourni par l'utilisateur buf pour le résultat.
3) Identique à (1) , sauf que la fonction utilise le stockage fourni par l'utilisateur buf pour le résultat et que les erreurs suivantes sont détectées à l'exécution et appellent la fonction gestionnaire de contraintes actuellement installée :
  • timer ou buf est un pointeur nul
Comme pour toutes les fonctions à vérification de limites, localtime_s n'est garantie d'être disponible que si __STDC_LIB_EXT1__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT1__ à la constante entière 1 avant d'inclure <time.h> .

Table des matières

Paramètres

timer - pointeur vers un objet time_t à convertir
buf - pointeur vers un objet struct tm pour stocker le résultat

Valeur de retour

1) pointeur vers un objet tm interne statique en cas de succès, ou pointeur nul sinon. La structure peut être partagée entre gmtime , localtime , et ctime et peut être écrasée à chaque invocation.
2,3) copie du pointeur buf , ou pointeur nul en cas d'erreur (qui peut être une violation de contrainte d'exécution ou un échec de conversion de l'heure spécifiée en heure calendaire locale).

Notes

La fonction localtime peut ne pas être sûre en contexte multithread. L'implémentation Microsoft CRT est sûre en contexte multithread.

POSIX exige que localtime et localtime_r définissent errno à EOVERFLOW en cas d'échec dû à un argument trop volumineux.

POSIX spécifie que les informations de fuseau horaire sont déterminées par localtime et localtime_r comme si en appelant tzset , qui lit la variable d'environnement TZ .

L'implémentation de localtime_s dans Microsoft CRT est incompatible avec la norme C car elle a inversé l'ordre des paramètres et retourne errno_t .

Exemple

#define __STDC_WANT_LIB_EXT1__ 1
#define _XOPEN_SOURCE // for putenv
#include <stdio.h>
#include <stdlib.h>   // for putenv
#include <time.h>
int main(void)
{
    time_t t = time(NULL);
    printf("UTC:       %s", asctime(gmtime(&t)));
    printf("local:     %s", asctime(localtime(&t)));
    // POSIX-specific
    putenv("TZ=Asia/Singapore");
    printf("Singapore: %s", asctime(localtime(&t)));
#ifdef __STDC_LIB_EXT1__
    struct tm buf;
    char str[26];
    asctime_s(str, sizeof str, gmtime_s(&t, &buf));
    printf("UTC:       %s", str);
    asctime_s(str, sizeof str, localtime_s(&t, &buf));
    printf("local:     %s", str);
#endif
}

Sortie possible :

UTC:       Fri Sep 15 14:22:05 2017
local:     Fri Sep 15 14:22:05 2017
Singapore: Fri Sep 15 22:22:05 2017
UTC:       Fri Sep 15 14:22:05 2017
local:     Fri Sep 15 14:22:05 2017

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.27.3.4 La fonction localtime (p: TBD)
  • K.3.8.2.4 La fonction localtime_s (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.27.3.4 La fonction localtime (p: 288)
  • K.3.8.2.4 La fonction localtime_s (p: 455)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.27.3.4 La fonction localtime (p: 394)
  • K.3.8.2.4 La fonction localtime_s (p: 627)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.23.3.4 La fonction localtime (p: 343)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.12.3.4 La fonction localtime

Voir aussi

convertit le temps depuis l'époque en temps calendaire exprimé en temps universel coordonné (UTC)
(fonction)
Documentation C++ pour localtime