Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 errno på EINVAL 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( <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 );
}
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