Condividi tramite


gmtime_s, _gmtime32_s, _gmtime64_s

Converte un valore di ora in una tm struttura. Queste funzioni sono versioni di , _gmtime64con miglioramenti della_gmtime32 sicurezza, come descritto in Funzionalità di sicurezza in CRT.

Sintassi

errno_t gmtime_s(
   struct tm* tmDest,
   const __time_t* sourceTime
);
errno_t _gmtime32_s(
   struct tm* tmDest,
   const __time32_t* sourceTime
);
errno_t _gmtime64_s(
   struct tm* tmDest,
   const __time64_t* sourceTime
);

Parametri

tmDest
Puntatore a una struttura tm. I campi della struttura restituita contengono il valore valutato dell'argomento timer in formato UTC anziché nell'ora locale.

sourceTime
Puntatore all'ora archiviata. L'ora è rappresentata come secondi trascorsi dalla mezzanotte (00.00.00) del 1 gennaio 1970 nel formato UTC (Coordinated Universal Time).

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 Restituzione Valore in tmDest
NULL qualsiasi EINVAL Non modificato.
Non NULL (punta alla memoria valida) NULL EINVAL Tutti i campi impostati su -1.
Not NULL < 0 EINVAL Tutti i campi impostati su -1.

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 _gmtime32_s funzione suddivide il sourceTime valore e la archivia in una struttura di tipo tm, definita in Time.h. L'indirizzo della struttura viene passato in tmDest. Il valore di sourceTime viene spesso ottenuto da una chiamata alla time funzione .

Ognuno dei campi della struttura è di tipo int, come mostrato nella tabella seguente.

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 Sempre 0 per gmtime_s.

_gmtime64_s, che usa la struttura __time64_t, consente di esprimere le date fino alle 23.59.59 del 31 dicembre 3000 UTC, mentre gmtime32_s rappresenta solo le date fino alle 23.59.59 del 18 gennaio 2038 UTC. La mezzanotte del 1 gennaio 1970 è il limite inferiore dell'intervallo di date per entrambe queste funzioni.

gmtime_s è una funzione inline equivalente a _gmtime64_s 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_Tgmtime_s causa l'inlining come _gmtime32_s. Non è consigliabile _USE_32BIT_TIME_T, perché l'applicazione potrebbe non riuscire dopo il 18 gennaio 2038 e perché non è consentita nelle piattaforme a 64 bit.

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
gmtime_s, _gmtime32_s, _gmtime64_s <time.h> <ctime> oppure <time.h>

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

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( &ltime );

   // Obtain coordinated universal time:
   err = _gmtime64_s( &newtime, &ltime );
   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 );
}
Coordinated universal time is Fri Apr 25 20:12:33 2003

Vedi anche

Gestione orari
asctime_s, _wasctime_s
ctime, _ctime32, _ctime64, _wctime, _wctime32_wctime64
_ftime, _ftime32, _ftime64
gmtime, _gmtime32, _gmtime64
localtime_s, _localtime32_s, _localtime64_s
_mkgmtime, _mkgmtime32, _mkgmtime64
mktime, _mktime32, _mktime64
time, _time32, _time64