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_tzurü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_tzurückgegeben.

_mktime64 gibt "-1" zurück, wenn __time64_ttimeptr auf ein Datum nach 23:59:59, 31. Dezember 3000, UTC verwiesen wird.

Bemerkungen

Die mktimeund _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 _mktime64entspricht, 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 timeptrauß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 asctimegmtime, 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