Dela via


gmtime_s, _gmtime32_s_gmtime64_s

Konverterar ett tidsvärde till en tm struktur. Dessa funktioner är versioner av _gmtime32, _gmtime64 med säkerhetsförbättringar enligt beskrivningen i Säkerhetsfunktioner i CRT.

Syntax

errno_t gmtime_s( // See note in remarks section about linkage
   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
);

Parameterar

tmDest
Pekare mot en tm struktur. Fälten i den returnerade strukturen innehåller det utvärderade värdet för timer argumentet i UTC i stället för i lokal tid.

sourceTime
Pekare till lagrad tid. Tiden representeras som sekunder som förflutit sedan midnatt (00:00:00), 1 januari 1970, samordnad universell tid (UTC).

Returvärde

Noll om det lyckas. Returvärdet är en felkod om det uppstår ett fel. Felkoder definieras i . En lista över dessa fel errnofinns i Errno.h.

Feltillstånd

tmDest sourceTime Return Värde i tmDest
NULL någon EINVAL Inte ändrad.
Inte NULL (pekar på giltigt minne) NULL EINVAL Alla fält är inställda på -1.
Inte NULL < 0 EINVAL Alla fält är inställda på -1.

De två första felvillkoren anropar den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta är dessa funktioner inställda errnoEINVAL och returnerar EINVAL.

Anmärkningar

Funktionen _gmtime32_s delar upp sourceTime värdet och lagrar det i en struktur av typen tm, definierad i Time.h. Adressen till strukturen skickas i tmDest. Värdet för sourceTime hämtas ofta från ett anrop till time funktionen.

Vart och ett av strukturfälten är av typen int, enligt följande tabell.

Fält Description
tm_sec Sekunder efter minut (0–59).
tm_min Minuter efter timme (0-59).
tm_hour Timmar sedan midnatt (0-23).
tm_mday Dag i månaden (1-31).
tm_mon Månad (0–11; Januari = 0).
tm_year År (aktuellt år minus 1900).
tm_wday Veckodag (0-6; Söndag = 0).
tm_yday Dag på året (0-365; 1 januari = 0).
tm_isdst Alltid 0 för gmtime_s.

_gmtime64_s, som använder __time64_t strukturen, tillåter att datum uttrycks fram till och med 23:59:59, 31 december 3000, UTC; medan gmtime32_s endast representerar datum till och med 23:59:59 januari 18, 2038, UTC. Midnight, 1 januari 1970, är den nedre gränsen för datumintervallet för båda dessa funktioner.

gmtime_s är en infogad funktion som utvärderas till _gmtime64_s och time_t motsvarar __time64_t. Om du behöver tvinga kompilatorn att tolka time_t som den gamla 32-bitars time_tkan du definiera _USE_32BIT_TIME_T. _USE_32BIT_TIME_T orsakar gmtime_s att vara inlined som _gmtime32_s. Vi rekommenderar _USE_32BIT_TIME_Tinte , eftersom programmet kan misslyckas efter den 18 januari 2038 och eftersom det inte är tillåtet på 64-bitarsplattformar.

Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.

Anmärkning

När du använder Windows SDK version 10.0.26100.6901 och Visual Studio 2026 eller senare tillsammans, gmtime_s är inte längre static inline (intern länkning). I stället är inline det (extern länkning).
För att återgå till det tidigare beteendet, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 innan du inkluderar några CRT-huvuden. Som standard _STATIC_INLINE_UCRT_FUNCTIONS är värdet 0.
Den här ändringen ökar UCRT-överensstämmelsen med C++-standarden och förbättrar kompatibiliteten med C++-moduler.

Kravspecifikation

Rutin ObligatoriskT C-huvud ObligatoriskT C++-huvud
gmtime_s, _gmtime32_s_gmtime64_s <time.h> <ctime> eller <time.h>

Mer kompatibilitetsinformation finns i Kompatibilitet.

Example

// 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

Se även

Tidshantering
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