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 vom Typ time_t
codiert zurück. Wenn timeptr
auf ein Datum vor Mitternacht, dem 1. Januar 1970 verwiesen wird oder die Kalenderzeit nicht dargestellt werden kann, _mktime32
wird -1 in den Typ time_t
"-1" zurückgegeben. Wenn sie ein Datum nach dem 23:59:59. Januar 2038, koordinierte Weltzeit (UTC) verwenden _mktime32
und timeptr
darauf verweisen, wird -1 in den Typ time_t
"-1" zurückgegeben.
_mktime64
gibt "-1" als Typ __time64_t
zurück, wenn timeptr
auf ein Datum nach 23:59:59, dem 31. Dezember 3000, UTC verwiesen wird.
Hinweise
Die mktime
und _mktime32
_mktime64
die Funktionen konvertieren die bereitgestellte Zeitstruktur (möglicherweise unvollständig), auf die durch timeptr
eine vollständig definierte Struktur mit normalisierten Werten verwiesen wird, 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 entspricht _mktime64
, es sei denn _USE_32BIT_TIME_T
, sie ist definiert, in diesem Fall entspricht sie _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 (umwandeln in time_t
oder __time32_t
__time64_t
) zurückgeben, obwohl sich das angegebene Datum innerhalb des Bereichs befindet. Wenn Sie sich beispielsweise in Kairo, Ägypten befinden, das zwei Stunden vor UTC liegt, werden zwei Stunden zuerst vom angegebenen Datum timeptr
subtrahiert; die Subtraktion kann jetzt Ihr Datum außerhalb des gültigen 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 Verhalten der Sommerzeit aus der TZ
Umgebungsvariable. Falls TZ
nicht festgelegt, wird der Win32-API-Aufruf GetTimeZoneInformation
verwendet, um die Informationen zur Sommerzeit vom 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
, oder gmtime
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
ein NULL-Zeiger ist, wird der Handler für ungültige Parameter aufgerufen, wie in Parameter Validation (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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Routine | Erforderlicher Header |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Libraries
Alle Versionen der 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
Siehe auch
Zeitverwaltung
asctime
, _wasctime
gmtime
, _gmtime32
_gmtime64
localtime
, _localtime32
_localtime64
_mkgmtime
, _mkgmtime32
_mkgmtime64
time
, _time32
_time64