Condividi tramite


localtime, _localtime32, _localtime64

Converte un valore di ora e lo corregge per il fuso orario locale. Sono disponibili versioni più sicure di queste funzioni; vedere localtime_s, _localtime32_s, _localtime64_s.

Sintassi

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

Parametri

sourceTime
Puntatore all'ora archiviata.

Valore restituito

Restituisce un puntatore al risultato della struttura oppure NULL se la data passata alla funzione è:

  • Prima di mezzanotte dell'1 gennaio 1970.

  • Dopo le 03.14.07 del 19 gennaio 2038, UTC (per _time32 e time32_t).

  • Dopo le 23.59.59 del 31 dicembre 3000, UTC (per _time64 e __time64_t).

_localtime64, che usa la struttura __time64_t, consente di esprimere le date fino alle 23.59.59 del 31 dicembre 3000 UTC (Coordinated Universal Time), mentre _localtime32 rappresenta le date fino alle 23.59.59 del 18 gennaio 2038 UTC.

localtime è una funzione inline equivalente a _localtime64 e time_t è equivalente a __time64_t. Se è necessario forzare il compilatore in modo che interpreti time_t come il vecchio time_ta 32 bit, è possibile definire _USE_32BIT_TIME_T. _USE_32BIT_TIME_Tlocaltime fa sì che restituisca _localtime32. 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 intoggetto :

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.

Osservazioni:

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

Entrambe le versioni a 32 bit e 64 bit di gmtime, mktime, mkgmtime e localtime usano una singola struttura tm per ogni thread per la conversione. Ogni chiamata a una di queste routine elimina definitivamente i risultati della chiamata precedente.

localtime 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 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.

Queste funzioni convalidano i relativi parametri. Se sourceTime è un puntatore Null o se il sourceTime valore è negativo, queste funzioni richiamano un gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, le funzioni restituiscono NULL e impostano errno su EINVAL.

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, _localtime32, _localtime64 <time.h> <ctime> oppure <time.h>

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

Esempio

// 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

Vedi anche

Gestione orari
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, _wctime32_wctime64
_ftime, _ftime32, _ftime64
gmtime, _gmtime32, _gmtime64
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset