mktime
| Definiert in Header <time.h> |
||
Renormalisiert die lokale Kalenderzeit, ausgedrückt als struct tm Objekt, und konvertiert sie auch in die Zeit seit der Epoche als time_t Objekt. arg->tm_wday und arg->tm_yday werden ignoriert. Die Werte in arg werden nicht auf Werte außerhalb des Bereichs geprüft.
Ein negativer Wert für arg->tm_isdst veranlasst mktime zu versuchen zu bestimmen, ob die Sommerzeit für die angegebene Zeit wirksam war.
Wenn die Konvertierung zu time_t erfolgreich ist, wird das Objekt arg modifiziert. Alle Felder von arg werden aktualisiert, um in ihre richtigen Bereiche zu passen. arg->tm_wday und arg->tm_yday werden anhand der in anderen Feldern verfügbaren Informationen neu berechnet.
Inhalt |
[bearbeiten] Parameter
| arg | - | Zeiger auf ein tm Objekt, das die zu konvertierende lokale Kalenderzeit angibt. |
[bearbeiten] Rückgabewert
Zeit seit der Epoche als time_t Objekt bei Erfolg, oder -1 wenn arg nicht als time_t Objekt dargestellt werden kann (POSIX schreibt in diesem Fall auch vor, dass EOVERFLOW in errno gespeichert wird).
[bearbeiten] Hinweise
Wenn das Objekt struct tm von POSIX strptime oder einer gleichwertigen Funktion erhalten wurde, ist der Wert von tm_isdst unbestimmt und muss explizit gesetzt werden, bevor mktime aufgerufen wird.
[bearbeiten] Beispiel
#define _POSIX_C_SOURCE 200112L // for setenv on gcc #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific struct tm tm = *localtime(&(time_t){time(NULL)}); printf("Today is %s", asctime(&tm)); printf("(DST is %s)\n", tm.tm_isdst ? "in effect" : "not in effect"); tm.tm_mon -= 100; // tm_mon is now outside its normal range mktime(&tm); // tm_isdst is not set to -1; today's DST status is used printf("100 months ago was %s", asctime(&tm)); printf("(DST was %s)\n", tm.tm_isdst ? "in effect" : "not in effect"); }
Mögliche Ausgabe
Today is Fri Apr 22 11:53:36 2016 (DST is in effect) 100 months ago was Sat Dec 22 10:53:36 2007 (DST was not in effect)
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.27.2.3 Die Funktion mktime (S. TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.27.2.3 Die Funktion mktime (S. 285-286)
- C11-Standard (ISO/IEC 9899:2011)
- 7.27.2.3 Die Funktion mktime (S. 390-391)
- C99-Standard (ISO/IEC 9899:1999)
- 7.23.2.3 Die Funktion mktime (S. 340-341)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.12.2.3 Die Funktion mktime
[bearbeiten] Siehe auch
| (C23)(C11) |
konvertiert Zeit seit Epoche in Kalenderzeit, ausgedrückt als lokale Zeit (Funktion) |
| C++ Dokumentation für mktime
| |