gmtime, gmtime_r, gmtime_s
Von cppreference.com
| Definiert in Header <time.h> |
||
| (1) | ||
| (2) | (seit C23) | |
| (3) | (seit C11) | |
1) Konvertiert die gegebene Zeit seit der Epoche (ein von timer aufgerufener time_t-Wert) in Kalenderzeit, ausgedrückt in koordinierter Weltzeit (UTC) im
struct tm-Format. Das Ergebnis wird in einem statischen Speicherbereich gespeichert und ein Zeiger auf diesen statischen Speicherbereich wird zurückgegeben.2) Wie (1), außer dass die Funktion den vom Benutzer bereitgestellten Speicherbereich buf für das Ergebnis verwendet.
3) Wie (1), außer dass die Funktion den vom Benutzer bereitgestellten Speicherbereich buf für das Ergebnis verwendet und dass die folgenden Fehler zur Laufzeit erkannt und die aktuell installierte Constraint-Handler-Funktion aufgerufen wird
- timer oder buf ist ein Nullzeiger
- Wie bei allen grenzgeprüften Funktionen ist
gmtime_snur dann garantiert verfügbar, wenn __STDC_LIB_EXT1__ von der Implementierung definiert wird und wenn der Benutzer __STDC_WANT_LIB_EXT1__ vor dem Einbinden von <time.h> auf die ganzzahlige Konstante 1 setzt.
Inhalt |
[bearbeiten] Parameter
| timer | - | Zeiger auf ein time_t-Objekt, das konvertiert werden soll |
| buf | - | Zeiger auf ein struct tm-Objekt, in dem das Ergebnis gespeichert werden soll |
[bearbeiten] Rückgabewert
1) Zeiger auf ein statisches internes tm-Objekt bei Erfolg, andernfalls ein 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 einem Fehler (der eine Laufzeit-Constraint-Verletzung oder ein Fehler bei der Konvertierung der angegebenen Zeit in UTC sein kann).
[bearbeiten] Hinweise
gmtime ist möglicherweise nicht threadsicher.
POSIX verlangt, dass gmtime und gmtime_r errno auf EOVERFLOW setzen, wenn sie fehlschlagen, weil das Argument zu groß ist.
Die Implementierung von gmtime_s in der Microsoft CRT ist mit dem C-Standard inkompatibel, da sie eine umgekehrte Parameterreihenfolge aufweist.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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-specific 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
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.27.3.3 Die Funktion gmtime (p: TBD)
- K.3.8.2.3 Die Funktion gmtime_s (p: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.27.3.3 Die Funktion gmtime (p: 288)
- K.3.8.2.3 Die Funktion gmtime_s (p: 454-455)
- C11-Standard (ISO/IEC 9899:2011)
- 7.27.3.3 Die Funktion gmtime (p: 393-394)
- K.3.8.2.3 Die Funktion gmtime_s (p: 626-627)
- C99-Standard (ISO/IEC 9899:1999)
- 7.23.3.3 Die Funktion gmtime (p: 343)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.12.3.3 Die Funktion gmtime
[bearbeiten] Siehe auch
| (C23)(C11) |
konvertiert Zeit seit Epoche in Kalenderzeit, ausgedrückt als lokale Zeit (Funktion) |
| C++-Dokumentation für gmtime
| |