gmtime_s, _gmtime32_s, _gmtime64_s

Konvertiert einen Zeitwert in eine tm Struktur. Diese Funktionen sind Versionen von _gmtime32, _gmtime64 mit Sicherheitsverbesserungen wie in den Sicherheitsfeatures im 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, wenn ein Fehler auftritt. Fehlercodes werden in Errno.hdefiniert ; eine Auflistung dieser Fehler finden Sie unter errno.

Fehlerbedingungen

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

Die ersten beiden Fehlerbedingungen rufen den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben EINVAL zurück.

Bemerkungen

Die _gmtime32_s Funktion löst den sourceTime Wert auf und speichert ihn in einer Struktur des Typs tm, die in Time.hdefiniert ist. Die Adresse dieser Struktur wird in tmDest übergeben. Der Wert sourceTime wird häufig von einem Aufruf an die time Funktion abgerufen.

Hinweis

Die Zielumgebung soll versuchen, zu bestimmen, ob die Sommerzeit wirksam ist. Die C-Laufzeitbibliothek wendet die Regeln der Vereinigten Staaten an, um die Berechnung der Sommerzeit zu implementieren.

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 Monat (1 - 31).
tm_mon Monat (0 - 11; Januar = 0).
tm_year Jahr (aktuelles Jahr minus 1900).
tm_wday Wochentag (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_tzu interpretieren, definieren Sie _USE_32BIT_TIME_T. _USE_32BIT_TIME_T verursacht gmtime_s , dass sie als _gmtime32_sinlineiert werden. Wir empfehlen _USE_32BIT_TIME_Tnicht, weil Ihre Anwendung nach dem 18. Januar 2038 fehlschlägt und weil sie auf 64-Bit-Plattformen nicht zulässig ist.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie unter "Globaler Zustand" im CRT.

Anforderungen

-Routine zurückgegebener Wert 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 Compatibility.

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

Weitere Informationen

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