Dela via


gmtime, _gmtime32_gmtime64

Konverterar ett time_t tidsvärde till en tm struktur. Säkrare versioner av dessa funktioner är tillgängliga. se gmtime_s, _gmtime32_s, _gmtime64_s.

Syntax

struct tm *gmtime( const time_t *sourceTime ); // See note in remarks section about linkage
struct tm *_gmtime32( const __time32_t *sourceTime );
struct tm *_gmtime64( const __time64_t *sourceTime );

Parameterar

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

Returvärde

En pekare till en struktur av typen tm. Fälten i den returnerade strukturen innehåller det utvärderade värdet för sourceTime argumentet i UTC i stället för i lokal tid. Varje strukturfält är av typen int, enligt följande:

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.

Både 32-bitars- och 64-bitarsversionerna av , , och localtime alla använder en gemensam tm struktur per tråd för konverteringenmkgmtime. mktimegmtime Varje anrop till någon av dessa funktioner förstör resultatet av ett tidigare anrop. Om sourceTime representerar ett datum före midnatt, 1 januari 1970, gmtime returnerar NULL. Det går inte att returnera något fel.

_gmtime64, som använder __time64_t strukturen, gör att datum kan uttryckas fram till 23:59:59, 31 december 3000, UTC. _gmtime32 representerar endast 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 funktionerna.

gmtime är en infogad funktion som utvärderas till _gmtime64och time_t motsvarar __time64_t om inte _USE_32BIT_TIME_T har definierats. Om du måste tvinga kompilatorn att tolka time_t som den gamla 32-bitars time_tkan du definiera _USE_32BIT_TIME_T, men det gör gmtime att den är in-lined till _gmtime32 och time_t definieras som __time32_t. Vi rekommenderar inte användning av _USE_32BIT_TIME_T, eftersom det inte är tillåtet på 64-bitarsplattformar. I vilket fall som helst kan ditt program misslyckas efter den 18 januari 2038.

Dessa funktioner verifierar sina parametrar. Om sourceTime är en NULL pekare, eller om sourceTime värdet är negativt, anropar dessa funktioner en ogiltig parameterhanterare enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returneras NULL funktionerna och anges errno till EINVAL.

Anmärkningar

Funktionen _gmtime32 delar upp sourceTime värdet och lagrar det i en statiskt allokerad struktur av typen tm, definierad i TIME.H. Värdet för sourceTime hämtas vanligtvis från ett anrop till time funktionen.

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 ä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, _gmtime32_gmtime64 <time.h> <ctime> eller <time.h>

Mer kompatibilitetsinformation finns i Kompatibilitet.

Example

// crt_gmtime.c
// compile with: /W3
// This program uses _gmtime64 to convert a long-
// integer representation of coordinated universal time
// to a structure named newtime, then uses asctime to
// convert this structure to an output string.

#include <time.h>
#include <stdio.h>

int main(void)
{
   struct tm *newtime;
   __int64 ltime;
   char buff[80];

   _time64( &ltime );

   // Obtain coordinated universal time:
   newtime = _gmtime64( &ltime ); // C4996
   // Note: _gmtime64 is deprecated; consider using _gmtime64_s
   asctime_s( buff, sizeof(buff), newtime );
   printf( "Coordinated universal time is %s\n", buff );
}
Coordinated universal time is Tue Feb 12 23:11:31 2002

Se även

Tidshantering
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, , _wctime32, _wctime64
_ftime, , _ftime32_ftime64
gmtime_s, , _gmtime32_s_gmtime64_s
localtime, , _localtime32_localtime64
_mkgmtime, , _mkgmtime32_mkgmtime64
mktime, , _mktime32_mktime64
time, , _time32_time64