gmtime, gmtime_r, gmtime_s
From cppreference.net
|
Definiert im Header
<time.h>
|
||
| (1) | ||
| (2) | (seit C23) | |
| (3) | (seit C11) | |
1)
Wandelt die angegebene Zeit seit der Epoche (einen
time_t
-Wert, auf den
timer
zeigt) in Kalenderzeit um, ausgedrückt in Koordinierter Weltzeit (UTC) im
struct tm
-Format. Das Ergebnis wird im statischen Speicher abgelegt und ein Zeiger auf diesen statischen Speicher wird zurückgegeben.
2)
Gleich wie
(1)
, außer dass die Funktion den benutzerbereitgestellten Speicher
buf
für das Ergebnis verwendet.
3)
Gleich wie
(1)
, außer dass die Funktion benutzerbereitgestellten Speicher
buf
für das Ergebnis verwendet und dass die folgenden Fehler zur Laufzeit erkannt werden und die aktuell installierte
Constraint-Handler
-Funktion aufrufen:
-
- timer oder buf ist ein Nullzeiger
-
Wie bei allen bounds-checked-Funktionen ist
gmtime_snur garantiert verfügbar, wenn __STDC_LIB_EXT1__ durch die Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ auf den Integer-Konstantenwert 1 setzt, bevor <time.h> eingebunden wird.
Inhaltsverzeichnis |
Parameter
| timer | - | Zeiger auf ein time_t Objekt zur Konvertierung |
| buf | - | Zeiger auf ein struct tm Objekt zum Speichern des Ergebnisses |
Rückgabewert
1)
Zeiger auf ein statisches internes
tm
-Objekt bei Erfolg, andernfalls Nullzeiger. Die Struktur kann zwischen
gmtime
,
localtime
und
ctime
geteilt werden und kann bei jedem Aufruf überschrieben werden.
2,3)
Kopie des
buf
-Zeigers oder Nullzeiger bei Fehler (was eine Verletzung der Laufzeitbeschränkung oder ein Fehler bei der Konvertierung der angegebenen Zeit in UTC sein kann).
Hinweise
gmtime
ist möglicherweise nicht threadsicher.
POSIX verlangt, dass
gmtime
und
gmtime_r
den
errno
auf
EOVERFLOW
setzen, falls sie fehlschlagen, weil das Argument zu groß ist.
Die Implementierung von
gmtime_s
im
Microsoft CRT
ist nicht mit dem C-Standard kompatibel, da sie eine umgekehrte Parameterreihenfolge verwendet.
Beispiel
Diesen Code ausführen
#define __STDC_WANT_LIB_EXT1__ 1 #define _XOPEN_SOURCE // for putenv #include <stdio.h> #include <stdlib.h> // for putenv #include <time.h> int main(void) { time_t t = time(NULL); printf("UTC: %s", asctime(gmtime(&t))); printf("local: %s", asctime(localtime(&t))); // POSIX-spezifisch putenv("TZ=Asia/Singapore"); printf("Singapore: %s", asctime(localtime(&t))); #ifdef __STDC_LIB_EXT1__ struct tm buf; char str[26]; asctime_s(str, sizeof str, gmtime_s(&t, &buf)); printf("UTC: %s", str); asctime_s(str, sizeof str, localtime_s(&t, &buf)); printf("local: %s", str); #endif }
Mögliche Ausgabe:
UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017 Singapore: Fri Sep 15 22:22:05 2017 UTC: Fri Sep 15 14:22:05 2017 local: Fri Sep 15 14:22:05 2017
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.27.3.3 Die gmtime-Funktion (S.: TBD)
-
- K.3.8.2.3 Die gmtime_s-Funktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.27.3.3 Die gmtime-Funktion (S: 288)
-
- K.3.8.2.3 Die gmtime_s-Funktion (S: 454-455)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.27.3.3 Die gmtime-Funktion (S: 393-394)
-
- K.3.8.2.3 Die gmtime_s-Funktion (S: 626-627)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.23.3.3 Die gmtime-Funktion (S: 343)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 4.12.3.3 Die gmtime-Funktion
Siehe auch
|
(C23)
(C11)
|
wandelt Zeit seit Epoche in Kalenderzeit um, ausgedrückt als Ortszeit
(Funktion) |
|
C++-Dokumentation
für
gmtime
|
|