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
etime32_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_t
a 32 bit, è possibile definire _USE_32BIT_TIME_T
. _USE_32BIT_TIME_T
localtime
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 int
oggetto :
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 long
sourceTime
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