localtime_s, _localtime32_s, _localtime64_s
converte un valore e corregge il fuso orario locale.queste sono versioni di localtime, _localtime32, _localtime64 con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in 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
);
Parametri
_tm
Puntatore a una struttura di tempo da riempire.time
Puntatore al tempo archiviato.
Valore restituito
Zero se ha esito positivo.Il valore restituito è un codice di errore se c " è un errore.I codici di errore definiti in Errno.h.per un elenco di questi errori, vedere errno.
condizioni di errore
_tm |
time |
Valore restituito |
Valore in _tm |
richiama il gestore non valido di parametro |
---|---|---|---|---|
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) |
meno di 0 o maggiore di _MAX__TIME64_T |
EINVAL |
Tutti i campi impostati su -1 |
No |
Nel caso delle prime due condizioni di errore, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, queste funzioni impostate errno in EINVAL e restituiscono EINVAL.
Note
_localtime32_s la funzione converte un'ora archiviato come time_t stimare e archivia il risultato in una struttura di tipo tm.long valore timer rappresenta i secondi trascorsi dalla mezzanotte (00:00: 00), il 1° gennaio 1970, UTC.Questo valore è in genere ottenuto dal time funzione.
_localtime32_s corregge il fuso orario locale se l'utente innanzitutto imposta la variabile di ambiente globali TZ.quando TZ è impostato, altre tre variabili di ambiente (_timezone, _daylighte _tzname) vengono impostate automaticamente anche.se TZ la variabile non è impostata, localtime32_s tenta di utilizzare le informazioni del fuso orario specificato nell'applicazione ora/data nel Pannello di controllo.Se tali informazioni non possono essere ottenute, PST8PDT, ovvero il fuso orario pacifico, viene utilizzato per impostazione predefinita.vedere _tzset per una descrizione di tali variabili.TZ è un'estensione Microsoft e non una parte della definizione standard ANSI di localtime.
[!NOTA]
L'ambiente di destinazione deve tentare di determinare se l'ora legale è attiva.
_localtime64_s, che utilizza __time64_t la struttura, vengono concesse le date da esprimere su con il 23:59: 59, il 31 dicembre, 3000, formato UTC (UTC), mentre _localtime32_s rappresenta le date con il 03:14: 7 gennaio 19, 2038, UTC.
localtime_s è una funzione inline che restituisce _localtime64_se time_t equivale a __time64_t.Se è necessario che il compilatore per interpretare time_t come il 32 bit obsoleto time_t, è possibile definire _USE_32BIT_TIME_T.Questa operazione provocherà localtime_s per valutare a _localtime32_s.Questa operazione non è consigliabile perché l'applicazione può non riuscire dopo il 19 gennaio 2038 e non è consentita sulle piattaforme a 64 bit.
I campi del tipo di struttura il TM archiviare i valori seguenti, ciascuno dei quali viene int.
tm_sec
Secondi dopo il minuto (da 0 a 59).tm_min
Rapporto dopo l'ora (da 0 a 59).tm_hour
Ore dopo la mezzanotte (da 0 a 23).tm_mday
Giorno del mese (da 1 a 31).tm_mon
Mese (da 0 a 11; gennaio = 0).tm_year
Anno (anno corrente meno 1900).tm_wday
Giorno della settimana (da 0 a 6; domenica = 0).tm_yday
Giorno dell'anno (da 0 a 365; 1° gennaio = 0).tm_isdst
Valore positivo se l'ora legale è attivo; 0 se l'ora legale non è attivo; valore negativo se lo stato dell'ora legale è sconosciuto.se TZ la variabile di ambiente è impostata, la libreria di runtime del linguaggio C presuppone le regole appropriate negli Stati Uniti per implementare il calcolo dell'ora (DST) legale.
Requisiti
routine |
Intestazione di associazione |
---|---|
localtime_s |
<time.h> |
_localtime32_s |
<time.h> |
_localtime64_s |
<time.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
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 );
}
Esempio di output
Fri Apr 25 01:19:27 PM
Equivalente .NET Framework
System:: DateTime:: ToLocalTime
Vedere anche
Riferimenti
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
gmtime_s, _gmtime32_s, _gmtime64_s