Partager via


localtime_s, _localtime32_s, _localtime64_s

Convertit une valeur d'heure et la corrige pour le fuseau horaire local.Ce sont des versions de localtime, _localtime32, _localtime64 avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.

errno_t localtime_s(
   struct tm* _tm,
   const time_t *time 
);
errno_t _localtime32_s(
   struct tm* _tm,
   const time32_t *time 
);
errno_t _localtime64_s(
   struct tm* _tm,
   const _time64_t *time 
);

Paramètres

  • _tm
    Pointeur vers la structure de temps à accomplir.

  • time
    Pointeur vers le temps stocké.

Valeur de retour

Zéro si l'opération a réussi.La valeur de retour est un code d'erreur si un échec.Les codes d'erreur sont définis dans Errno.h.Pour obtenir la liste de ces erreurs, consultez l' errno.

conditions d'erreur

_tm

time

Valeur de retour

valeur dans _tm

appelle le gestionnaire de paramètre non valide

NULL

quels

EINVAL

non modifié

Oui

Pas NULL (pointe vers une mémoire non valide)

NULL

EINVAL

tous les champs définis à -1

Oui

Pas NULL (pointe vers une mémoire non valide)

moins de 0 ou supérieure _MAX__TIME64_T

EINVAL

tous les champs définis à -1

Non

Dans le cas de les deux premières conditions d'erreur, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces errno défini par fonctions à EINVAL et à EINVALde retour.

Notes

La fonction d' _localtime32_s convertit une heure enregistré en tant que valeur de time_t et stocke le résultat dans une structure de type tm.La valeur timer d' long représente les secondes s'est écoulé depuis minuit (0h00 : 00), le 1er janvier 1970, l'heure UTC.Cette valeur est généralement fournie par la fonction d' time .

_localtime32_s corrige pour le fuseau horaire local si l'utilisateur définit d'abord la variable d'environnement globale TZ.Lorsque TZ est défini, trois autres variables d'environnement (_timezone, _daylight, et _tzname) automatiquement sont également définies.Si la variable d' TZ n'est pas définie, les tentatives d' localtime32_s d'utiliser les informations de fuseau horaire avez spécifié dans l'application de date/heure du panneau de configuration.Si ces informations ne peuvent pas être obtenues, PST8PDT, ce qui signifie que le fuseau horaire Pacifique (états-unis), est utilisé par défaut.Consultez _tzset pour obtenir une description de ces variables.TZ est une extension Microsoft et pas partie de la définition de date d' localtime.

[!REMARQUE]

L'environnement cible doit essayer de déterminer si l'heure d'été est appliquée.

_localtime64_s, qui utilise la structure d' __time64_t , accorde des dates à exprimer via le 23h59 : 59, le 31 décembre, 3000, (UTC) coordinated universal time), alors qu' _localtime32_s représente des dates via le 3h14 : Le 7 janvier 19, 2038, l'heure UTC.

localtime_s est une fonction inline qui correspond à _localtime64_s, et time_t équivaut à __time64_t.Si vous devez forcer le compilateur à interpréter time_t comme time_t32 bits ancien, vous pouvez définir _USE_32BIT_TIME_T.Cela entraînera l'évaluer localtime_s à _localtime32_s.Cela n'est pas recommandé parce que votre application peut échouer après le 19 janvier 2038, et il n'est pas autorisé sur les plateformes 64 bits.

Les champs du type le TM de structure stockent les valeurs suivantes, qui est int.

  • tm_sec
    secondes après la minute (0 - 59).

  • tm_min
    minutes après l'heure (0 - 59).

  • tm_hour
    Heures après 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 activé ; 0 si l'heure d'été n'est pas appliqué ; valeur négative si l'état d'heure d'été est inconnu.Si la variable d'environnement TZ est définie, la bibliothèque Runtime C utilise des règles appropriées aux états-unis pour implémenter le calcul de l'heure d' (DST)été.

Configuration requise

routine

en-tête requis

localtime_s

<time.h>

_localtime32_s

<time.h>

_localtime64_s

<time.h>

Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.

Exemple

// crt_localtime_s.c
/* This program uses _time64 to get the current time 
 * and then uses _localtime64_s() 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;
        char timebuf[26];
        errno_t err;

        // Get time as 64-bit integer.
        _time64( &long_time ); 
        // Convert to local time.
        err = _localtime64_s( &newtime, &long_time ); 
        if (err)
        {
            printf("Invalid argument to _localtime64_s.");
            exit(1);
        }
        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;

        // Convert to an ASCII representation. 
        err = asctime_s(timebuf, 26, &newtime);
        if (err)
        {
           printf("Invalid argument to asctime_s.");
           exit(1);
        }
        printf( "%.19s %s\n", timebuf, am_pm );
}

Résultat de l'exemple

Fri Apr 25 01:19:27 PM

Équivalent .NET Framework

System : : Datetime : : ToLocalTime

Voir aussi

Référence

Gestion de la durée

asctime_s, _wasctime_s

ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64

_ftime, _ftime32, _ftime64

gmtime_s, _gmtime32_s, _gmtime64_s

localtime, _localtime32, _localtime64

time, _time32, _time64

_tzset