localtime_s, _localtime32_s, _localtime64_s

Converte un time_t valore di ora in una tm struttura e corregge il fuso orario locale. Queste funzioni sono versioni di , , _localtime64con miglioramenti dellalocaltime sicurezza, come descritto in Funzionalità di sicurezza in CRT._localtime32

Sintassi

errno_t localtime_s(
   struct tm* const tmDest,
   time_t const* const sourceTime
);
errno_t _localtime32_s(
   struct tm* tmDest,
   __time32_t const* sourceTime
);
errno_t _localtime64_s(
   struct tm* tmDest,
   __time64_t const* sourceTime
);

Parametri

tmDest
Puntatore alla struttura dell'ora da compilare.

sourceTime
Puntatore all'ora archiviata.

Valore restituito

Zero in caso di esito positivo. Il valore restituito è un codice di errore in caso di errore. I codici di errore sono definiti in Errno.h. Per un elenco di questi errori, vedere errno.

Condizioni di errore

tmDest sourceTime Valore restituito Valore in tmDest Richiama il gestore di parametri non validi
NULL qualsiasi EINVAL Non modificato
Non NULL (punta alla memoria valida) NULL EINVAL Tutti i campi impostati su -1
Non NULL (punta alla memoria valida) minore di 0 o maggiore di _MAX__TIME64_T EINVAL Tutti i campi impostati su -1 No

Le prime due condizioni di errore richiamano il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni impostano errno su EINVAL e restituiscono EINVAL.

Osservazioni:

La localtime_s funzione converte un'ora archiviata come time_t valore e archivia il risultato in una struttura di tipo tm. Il valore time_tsourceTime rappresenta i secondi trascorsi dalla mezzanotte (00.00.00) del 1 gennaio 1970 nel formato UTC. Questo valore viene spesso ottenuto dalla time funzione .

localtime_s applica una correzione per il fuso orario locale se l'utente imposta innanzitutto la variabile di ambiente globale TZ. Quando si imposta TZ, vengono impostate automaticamente anche altre tre variabili di ambiente (_timezone, _daylight e _tzname). Se la TZ variabile non è impostata, localtime_s tenta di usare le informazioni sul fuso orario specificate nell'applicazione Data/ora in Pannello di controllo. Se queste informazioni non possono essere ottenute, PST8PDT, che indica il fuso orario pacifico, viene usato per impostazione predefinita. Vedere _tzset per una descrizione di queste variabili. TZ è un'estensione Microsoft e non fa parte della definizione standard ANSI di localtime.

Nota

L'ambiente di destinazione deve provare a determinare se è in vigore l'ora legale.

_localtime64_s, che usa la struttura __time64_t, consente di esprimere le date fino alle 23.59.59 del 18 gennaio 3001 UTC (Coordinated Universal Time), mentre _localtime32_s rappresenta le date fino alle 23.59.59 del 18 gennaio 2038 UTC.

localtime_s è una funzione inline equivalente a _localtime64_s e time_t è equivalente a __time64_t. Se è necessario forzare il compilatore a interpretare time_t come il vecchio a 32 bit time_t, è possibile definire _USE_32BIT_TIME_T, che determina la localtime_s valutazione di _localtime32_s. Non è consigliabile _USE_32BIT_TIME_T, perché l'applicazione potrebbe non riuscire dopo il 18 gennaio 2038 e non è consentita nelle piattaforme a 64 bit.

I campi del tipo di tm struttura archiviano i valori seguenti, ognuno dei quali è un oggetto int.

Campo Descrizione
tm_sec Secondi dopo minuto (0 - 59).
tm_min Minuti dopo l'ora (0 - 59).
tm_hour Ore dalla mezzanotte (0 - 23).
tm_mday Giorno del mese (1 - 31).
tm_mon Mese (0 - 11; Gennaio = 0).
tm_year Anno (anno corrente meno 1900).
tm_wday Giorno della settimana (0 - 6; Domenica = 0).
tm_yday Giorno dell'anno (0 - 365; 1 gennaio = 0).
tm_isdst Valore positivo se l'ora legale è attiva; 0 se l'ora legale non è attiva; valore negativo se lo stato dell'ora legale è sconosciuto.

Se viene impostata la variabile di ambiente TZ, la libreria di runtime C presuppone l'uso delle regole relative agli Stati Uniti per implementare il calcolo dell'ora legale.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione C obbligatoria Intestazione C++ obbligatoria
localtime_s, _localtime32_s, _localtime64_s <time.h> <ctime> oppure <time.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

// 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 );
}
Fri Apr 25 01:19:27 PM

Vedi anche

Gestione orari
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