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 , , _localtime64
con 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 | Sì |
Non NULL (punta alla memoria valida) |
NULL |
EINVAL |
Tutti i campi impostati su -1 | Sì |
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_t
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 .
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