gmtime_s, _gmtime32_s, _gmtime64_s
Converte un valore temporale in una struttura. Queste sono versioni di _gmtime32, _gmtime64 con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
errno_t gmtime_s(
struct tm* _tm,
const __time_t* time
);
errno_t _gmtime32_s(
struct tm* _tm,
const __time32_t* time
);
errno_t _gmtime64_s(
struct tm* _tm,
const __time64_t* time
);
Parametri
_tm
Puntatore a una struttura tm. I campi della struttura restituita contengono il valore valutato in formato UTC, dell'argomento timer anziché l'ora locale.time
Puntatore all'ora archiviata. Il tempo viene rappresentato come i secondi trascorsi dopo la mezzanotte (00:00:00) del 1° Gennaio 1970, formato UTC (Universal Coordinated Time).
Valore restituito
Zero se ha esito positivo. Il valore restituito è un codice di errore in presenza di un fallimento. I codici di errore vengono definiti in Errno.h; per un elenco di questi errori, vedere errno.
Condizioni di errore
_tm |
time |
Restituzione |
Valore in _tm |
---|---|---|---|
NULL |
any |
EINVAL |
Non modificato. |
Non NULL (punta alla memoria valida) |
NULL |
EINVAL |
Tutti i campi impostati a -1. |
Non NULL |
< 0 |
EINVAL |
Tutti i campi impostati a -1. |
Nel caso delle prime due condizioni di errore, viene richiamato il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni impostano errno a EINVAL e restituiscono EINVAL.
Note
La funzione _gmtime32_s suddivide il valore time e lo archivia in una struttura di tipo tm, definita in Time.h. L'indirizzo della struttura viene passato in _tm. Il valore time in genere viene ottenuto da una chiamata alla funzione time.
Nota
L'ambiente di destinazione deve tentare di determinare se è in vigore l'ora legale.La libreria di runtime C utilizza le direttive degli Stati Uniti per implementare il calcolo dell'ora legale.
Ognuno dei campi della struttura è di tipo int, come illustrato nella tabella seguente.
tm_sec
Secondi dopo un minuto (0 – 59).tm_min
Minuti dopo un'ora (0 – 59).tm_hour
Ore da 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; Gennaio 1 = 0).tm_isdst
Sempre 0 per il campo gmtime.
_gmtime64_s, che utilizza la struttura __time64_t, permette di esprimere date fino alle 23:59:59 del 31 dicembre 3000, nel formato UTC; gmtime32_s invece rappresenta solo date fino alle 03:14:07 del 19 Gennaio 2038, nel formato UTC. Per entrambe queste funzioni la mezzanotte del 1° gennaio 1970 è il limite inferiore dell'intervallo di date.
gmtime_s è una funzione inline che valuta _gmtime64_s e time_t equivale a __time64_t. Se è necessario forzare il compilatore ad interpretare time_t come il vecchio time_t a 32 bit, è possibile definire _USE_32BIT_TIME_T. Ciò forza gmtime_s a essere in linea con _gmtime32_s. Questa operazione non è consigliabile perché l'applicazione fallirebbe dopo il 18 gennaio 2038, e ciò non è consentito su piattaforme a 64 bit.
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
gmtime_s |
<time.h> |
_gmtime32_s |
<time.h> |
_gmtime64_s |
<time.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Esempio
// crt_gmtime64_s.c
// This program uses _gmtime64_s to convert a 64-bit
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime_s to
// convert this structure to an output string.
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm newtime;
__int64 ltime;
char buf[26];
errno_t err;
_time64( <ime );
// Obtain coordinated universal time:
err = _gmtime64_s( &newtime, <ime );
if (err)
{
printf("Invalid Argument to _gmtime64_s.");
}
// Convert to an ASCII representation
err = asctime_s(buf, 26, &newtime);
if (err)
{
printf("Invalid Argument to asctime_s.");
}
printf( "Coordinated universal time is %s\n",
buf );
}
Equivalente .NET Framework
Vedere anche
Riferimenti
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
localtime_s, _localtime32_s, _localtime64_s