localtime, _localtime32, _localtime64

Convertit une valeur de temps et effectue une correction en fonction du fuseau horaire local. Des versions plus sécurisées de ces fonctions sont disponibles ; voir localtime_s, _localtime32_s, _localtime64_s.

Syntaxe

struct tm *localtime( const time_t *sourceTime );
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );

Paramètres

sourceTime
Pointeur désignant la valeur de temps stockée.

Valeur retournée

Retourner un pointeur désignant le résultat de la structure, ou NULL si la date passée à la fonction se situe :

  • Avant le 1er janvier 1970 à minuit

  • Après le 19 janvier 2038 à 03:14:07, heure UTC (dans le cas de _time32 et de time32_t).

  • Après le 31 décembre 3000 à 23:59:59, heure UTC (dans le cas de _time64 et de __time64_t).

_localtime64, qui utilise la structure __time64_t, permet d’exprimer les dates jusqu’au 31 décembre 3000 à 23:59:59, heure UTC (temps universel coordonné), tandis que _localtime32 représente les dates jusqu’au 18 janvier 2038 à 23:59:59, heure UTC.

localtime est une fonction inline qui prend la valeur _localtime64, tandis que time_t équivaut à __time64_t. Si vous devez forcer le compilateur à interpréter time_t comme ancien time_t32 bits, vous pouvez définir _USE_32BIT_TIME_T. _USE_32BIT_TIME_T causes localtime à évaluer à _localtime32. Nous vous déconseillons _USE_32BIT_TIME_T, car votre application peut échouer après le 18 janvier 2038 et elle n’est pas autorisée sur les plateformes 64 bits.

Les champs du type tm de structure stockent les valeurs suivantes, chacune d’elles étant un int:

Champ Description
tm_sec Secondes après la minute (0 - 59).
tm_min Minutes après l’heure (0 - 59).
tm_hour Heures depuis minuit (0 - 23).
tm_mday Jour du mois (1 à 31).
tm_mon Mois (0 - 11 ; Janvier = 0).
tm_year Année (année en cours moins 1900).
tm_wday Jour de la semaine (0 - 6 ; Dimanche = 0).
tm_yday Jour de l’année (0 - 365 ; 1er janvier = 0).
tm_isdst Valeur positive si l’heure d’été est en vigueur ; 0 si l’heure d’été n’est pas en vigueur ; valeur négative si l’état de l’heure d’été est inconnu.

Si la variable d’environnement TZ est définie, la bibliothèque runtime C suppose que les règles de calcul de l’heure d’été appropriées sont celles des États-Unis.

Notes

La localtime fonction convertit une heure stockée sous forme de time_t valeur et stocke le résultat dans une structure de type tm. La valeur longsourceTime représente les secondes écoulées depuis le 1er janvier 1970 à minuit (00:00:00), heure UTC. Cette valeur est souvent obtenue à partir de la time fonction.

Les versions 32 bits et 64 bits de gmtime, mktime, mkgmtime et localtime utilisent toutes une structure tm unique par thread pour la conversion. Chaque appel à une de ces routines détruit le résultat de l’appel précédent.

localtime effectue une correction en fonction du fuseau horaire local si l’utilisateur définit d’abord la variable d’environnement globale TZ. Quand TZ est définie, les trois autres variables d’environnement (_timezone, _daylight et _tzname) sont également définies automatiquement. Si la TZ variable n’est pas définie, localtime tente d’utiliser les informations de fuseau horaire spécifiées dans l’application Date/Heure dans Panneau de configuration. Si ces informations ne peuvent pas être obtenues, PST8PDT, ce qui signifie que le fuseau horaire pacifique est utilisé par défaut. Consultez _tzset une description de ces variables. TZ est une extension Microsoft et ne fait pas partie de la définition de la norme ANSI de localtime.

Remarque

L’environnement cible doit tenter de déterminer si l’heure d’été est en vigueur.

Ces fonctions valident leurs paramètres. S’il sourceTime s’agit d’un pointeur Null ou si la sourceTime valeur est négative, ces fonctions appellent un gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à se poursuivre, les fonctions retournent NULL et affectent à errno la valeur EINVAL.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête C requis En-tête C++ requis
localtime, _localtime32, _localtime64 <time.h> <ctime> ou <time.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// crt_localtime.cpp
// compile with: /W3
// This program uses _time64 to get the current time
// and then uses localtime64() to convert this time to a structure
// representing the local time. The program converts the result
// from a 24-hour clock to a 12-hour clock and determines the
// proper extension (AM or PM).

#include <stdio.h>
#include <string.h>
#include <time.h>

int main( void )
{
    struct tm *newtime;
    char am_pm[] = "AM";
    __time64_t long_time;

    _time64( &long_time );             // Get time as 64-bit integer.
                                       // Convert to local time.
    newtime = _localtime64( &long_time ); // C4996
    // Note: _localtime64 deprecated; consider _localetime64_s

    if( newtime->tm_hour > 12 )        // Set up extension.
        strcpy_s( am_pm, sizeof(am_pm), "PM" );
    if( newtime->tm_hour > 12 )        // Convert from 24-hour
        newtime->tm_hour -= 12;        //   to 12-hour clock.
    if( newtime->tm_hour == 0 )        // Set hour to 12 if midnight.
        newtime->tm_hour = 12;

    char buff[30];
    asctime_s( buff, sizeof(buff), newtime );
    printf( "%.19s %s\n", buff, am_pm );
}
Tue Feb 12 10:05:58 AM

Voir aussi

Gestion des horaires
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime, _gmtime32, _gmtime64
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset