mktime
, _mktime32
, _mktime64
Konvertiert die Ortszeit in einen Kalenderwert.
Syntax
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parameter
timeptr
Zeiger auf Zeitstruktur; siehe asctime
.
Rückgabewert
_mktime32
gibt die angegebene Kalenderzeit als Wert des Typs time_t
zurück. Wenn timeptr
ein Datum vor Mitternacht, 1. Januar 1970 oder die Kalenderzeit nicht dargestellt werden kann, _mktime32
gibt "-1" zurück, um den Typ "-1" einzugeben time_t
. Wenn Sie ein Datum nach 23:59:59 Januar 18. Januar 2038, koordinierte Weltzeit (UTC) verwenden _mktime32
und timeptr
verweisen, wird -1 zum Typ time_t
zurückgegeben.
_mktime64
gibt "-1" zurück, wenn __time64_t
timeptr
auf ein Datum nach 23:59:59, 31. Dezember 3000, UTC verwiesen wird.
Bemerkungen
Die mktime
und _mktime32
_mktime64
Funktionen konvertieren die angegebene Zeitstruktur (möglicherweise unvollständig) durch timeptr
eine vollständig definierte Struktur mit normalisierten Werten und konvertiert sie dann in einen time_t
Kalenderzeitwert. Die konvertierte Zeit hat dieselbe Codierung wie die von der time
Funktion zurückgegebenen Werte. Die ursprünglichen Werte der tm_wday
Struktur und tm_yday
komponenten der timeptr
Struktur werden ignoriert, und die ursprünglichen Werte der anderen Komponenten sind nicht auf ihre normalen Bereiche beschränkt.
mktime
ist eine Inlinefunktion, die dem _mktime64
entspricht, es sei denn _USE_32BIT_TIME_T
, es wird definiert, in diesem Fall entspricht es _mktime32
.
Nach einer Anpassung an die koordinierte Weltzeit (UTC) verarbeitet _mktime32
Datumsangaben von Mitternacht (UTC) des 1. Januar 1970 bis 23:59:59 (UTC) des 18. Januar 2038. _mktime64
behandelt Datumsangaben von Mitternacht, 1. Januar 1970 bis 23:59:59, 31. Dezember 3000. Diese Anpassung kann dazu führen, dass diese Funktionen -1 (umwandlung in time_t
__time32_t
oder __time64_t
) zurückgeben, obwohl das angegebene Datum innerhalb des Bereichs liegt. Wenn Sie sich beispielsweise in Kairo, Ägypten befinden, das zwei Stunden vor UTC liegt, werden zwei Stunden zuerst vom angegebenen Datum subtrahiert; die Subtraktion kann jetzt Ihr Datum timeptr
außerhalb des Bereichs setzen.
Diese Funktionen können verwendet werden, um eine tm
Struktur zu überprüfen und auszufüllen. Bei Erfolg legen diese Funktionen ggf. die Werte aus tm_wday
und tm_yday
fest. Die anderen Komponenten werden so festgelegt, dass die angegebene Kalenderzeit dargestellt wird, jedoch mit den in den Normalbereichen erzwungenen Werten. Der endgültige Wert wird tm_mday
erst festgelegt, wenn tm_mon
er tm_year
bestimmt wird. Wenn Sie eine tm
-Strukturzeit angeben, legen Sie das Feld tm_isdst
auf Folgendes fest:
Null (0) weist darauf hin, dass die Normalzeit gilt.
Ein Wert größer als 0 weist darauf hin, dass die Sommerzeit gilt.
Ein Wert kleiner als null gibt an, dass der C-Laufzeitbibliothekscode berechnet, ob Normalzeit oder Sommerzeit gilt.
Die C-Laufzeitbibliothek bestimmt das Zeitverhalten der TZ
Umgebungsvariablen. Wenn TZ
dies nicht festgelegt ist, wird der Win32-API-Aufruf GetTimeZoneInformation
verwendet, um die Informationen zur Sommerzeit aus dem Betriebssystem abzurufen. Wenn der Aufruf fehlschlägt, geht die Bibliothek davon aus, dass die Regeln der USA für die Implementierung der Berechnung der Sommerzeit verwendet werden. tm_isdst
ist ein Pflichtfeld. Wenn es nicht festgelegt wird, wird sein Wert nicht definiert und der Rückgabewert dieser Funktionen ist unvorhersehbar. Wenn timeptr
auf eine tm
Struktur verweist, die von einem vorherigen Aufruf von asctime
gmtime
, oder localtime
(oder Varianten dieser Funktionen) zurückgegeben wird, enthält das tm_isdst
Feld den richtigen Wert.
Die gmtime
Funktionen und localtime
(und _gmtime64
_gmtime32
, _localtime32
, und _localtime64
) verwenden einen einzelnen Puffer pro Thread für die Konvertierung. Wenn Sie diesen Puffer für mktime
, _mktime32
oder _mktime64
bereitstellen, wird der vorherige Inhalt zerstört.
Diese Funktionen überprüfen ihre Parameter. Wenn timeptr
es sich um einen Nullzeiger handelt, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben die Funktionen – 1 zurück und legen errno
auf EINVAL
fest.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im globalen Zustand im CRT.
Anforderungen
-Routine zurückgegebener Wert | Erforderlicher Header |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Compatibility.
Bibliotheken
Alle Versionen C-Laufzeitbibliotheken.
Beispiel
// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm when;
__time64_t now, result;
int days;
char buff[80];
time( &now );
_localtime64_s( &when, &now );
asctime_s( buff, sizeof(buff), &when );
printf( "Current time is %s\n", buff );
days = 20;
when.tm_mday = when.tm_mday + days;
if( (result = mktime( &when )) != (time_t)-1 ) {
asctime_s( buff, sizeof(buff), &when );
printf( "In %d days the time will be %s\n", days, buff );
} else
perror( "mktime failed" );
}
Beispielausgabe
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Weitere Informationen
Zeitverwaltung
asctime
, _wasctime
gmtime
, _gmtime32
, _gmtime64
localtime
, _localtime32
, _localtime64
_mkgmtime
, _mkgmtime32
, _mkgmtime64
time
, _time32
, _time64