Freigeben über


gmtime_s, _gmtime32_s, _gmtime64_s

Konvertiert einen Zeitwert in eine tm-Struktur. Diese Funktionen sind Versionen von _gmtime32, _gmtime64 mit Sicherheitsverbesserungen wie unter Sicherheitsfunktionen in der CRT beschrieben.

Syntax

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
);

Parameter

tmDest
Zeiger auf eine tm-Struktur. Die Felder der zurückgegebenen Struktur enthalten den ausgewerteten Wert des timer-Arguments im UTC-Format. Die Angabe erfolgt nicht in Ortszeit.

sourceTime
Zeiger auf die gespeicherte Zeit Die Zeit wird in Sekunden dargestellt, die seit dem 1. Januar 1970, Mitternacht (00:00: 00), verstrichen sind. Die Anzeige erfolgt im UTC-Format.

Rückgabewert

Null, wenn erfolgreich. Der Rückgabewert ist ein Fehlercode, falls ein Fehler auftritt. Fehlercodes sind in Errno.h definiert. Eine Liste dieser Fehler finden Sie unter errno.

Fehlerbedingungen

tmDest sourceTime Return Wert in tmDest.
NULL Beliebig EINVAL Nicht geändert.
Nicht NULL (zeigt gültigen Speicher an) NULL EINVAL Alle Felder auf -1 festgelegt.
Nicht NULL < 0 EINVAL Alle Felder auf -1 festgelegt.

Bei den ersten beiden Fehlerbedingungen wird ein Handler für ungültige Parameter aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben EINVAL zurück.

Hinweise

Die _gmtime32_s-Funktion gliedert den sourceTime-Wert und speichert diesen in eine Struktur vom Typ tm, die in Time.h definiert ist. Die Adresse dieser Struktur wird in tmDest übergeben. Der Wert von sourceTime wird oft durch einen Aufruf der time-Funktion abgerufen.

Jedes Strukturfeld ist vom Typ int, wie in der folgenden Tabelle dargestellt wird.

Feld Beschreibung
tm_sec Sekunden nach Minute (0 - 59).
tm_min Minuten nach Stunde (0 - 59).
tm_hour Stunden seit Mitternacht (0 - 23).
tm_mday Tag im Monat (1 - 31).
tm_mon Monat (0 - 11; Januar = 0).
tm_year Jahr (aktuelles Jahr minus 1900).
tm_wday Tag der Woche (0 - 6; Sonntag = 0).
tm_yday Tag des Jahres (0 - 365; Januar 1 = 0).
tm_isdst Für gmtime_s immer 0.

_gmtime64_s, das die __time64_t-Struktur verwendet, erlaubt das Ausdrücken von Daten über den 31. Dezember 3000, 23:59:59 UTC hinaus, während gmtime32_s nur Datumsangaben bis zum 18. Januar 2038, 23:59:59 UTC, darstellt. Der 1. Januar 1970 (Mitternacht) ist der untere Datumsbereich für diese beiden Funktionen.

gmtime_s ist eine Inlinefunktion, die _gmtime64_s auswertet, und time_t entspricht __time64_t. Wenn Sie den Compiler zwingen müssen, time_t als das alte 32-Bit-time_t zu interpretieren, definieren Sie _USE_32BIT_TIME_T. _USE_32BIT_TIME_T bewirkt, dass gmtime_s als _gmtime32_s inlineiert wird. _USE_32BIT_TIME_T ist nicht zu empfehlen, weil bei Ihrer Anwendung nach dem 18. Januar 2038 ein Fehler auftreten kann. Die Verwendung ist außerdem auf 64-Bit-Plattformen nicht zulässig.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Routine Erforderlicher C-Header Erforderlicher C++-Header
gmtime_s, _gmtime32_s, _gmtime64_s <time.h> <ctime> oder <time.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Siehe auch

Zeitverwaltung
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