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 die Zeitstruktur; weitere Informationen finden Sie unter asctime.

Rückgabewert

_mktime32 gibt die angegebene Kalenderzeit zurück, die als Wert vom Typ time_tcodiert ist. Wenn timeptr auf ein Datum vor Mitternacht, dem 1. Januar 1970, verweist oder wenn die Kalenderzeit nicht dargestellt werden kann, _mktime32 gibt -1 in den Typ time_tzurück. Wenn und _mktime32timeptr auf ein Datum nach dem 18. Januar 2038, 23:59:59, koordinierte Weltzeit (UTC) verweist, wird -1 in den Typ time_tzurückgegeben.

_mktime64 gibt -1 umwandlung in type __time64_t zurück, wenn timeptr auf ein Datum nach 23:59:59, 31. Dezember 3000, UTC verweist.

Bemerkungen

Die mktimeFunktionen , _mktime32 und _mktime64 konvertieren die angegebene Zeitstruktur (möglicherweise unvollständig), auf die von gezeigt wird timeptr , in eine vollständig definierte Struktur mit normalisierten Werten und konvertiert sie dann in einen time_t Kalenderzeitwert. Die konvertierte Zeit hat die gleiche Codierung wie die von der time Funktion zurückgegebenen Werte. Die ursprünglichen Werte der tm_wday - 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, sofern nicht _USE_32BIT_TIME_T definiert ist. In diesem Fall entspricht _mktime32sie .

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 zurückgeben (umwandlung in time_toder __time32_t__time64_t), obwohl das angegebene Datum innerhalb des Bereichs liegt. Wenn Sie sich z. B. in "Cairo, Auf dem Gebiet", das zwei Stunden vor UTC liegt, befinden, werden zunächst zwei Stunden von dem Datum subtrahiert, das Sie in timeptrangegeben haben. Dadurch liegt Ihr Datum möglicherweise außerhalb des Bereichs.

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 von tm_mday wird erst festgelegt, wenn tm_mon und tm_year bestimmt werden. 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 Sommerzeitverhalten aus der TZ Umgebungsvariablen. Wenn TZ nicht festgelegt ist, wird der Win32-API-Aufruf GetTimeZoneInformation verwendet, um die Sommerzeitinformationen vom Betriebssystem abzurufen. Wenn dies fehlschlägt, geht die Bibliothek davon aus, dass die Regeln der Vereinigten Staaten für die Implementierung der Berechnung der Sommerzeit angewendet 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 durch einen vorherigen Aufruf von asctime, gmtimeoder localtime (oder Varianten dieser Funktionen) zurückgegeben wurde, enthält das tm_isdst Feld den richtigen Wert.

gmtime und localtime (sowie _gmtime32, _gmtime64, _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 wie unter Parameter Validation (Parameterüberprüfung) beschrieben aufgerufen. 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 dies ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

-Routine zurückgegebener Wert Erforderlicher Header
mktime <time.h>
_mktime32 <time.h>
_mktime64 <time.h>

Zusätzliche 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

Siehe auch

Zeitmanagement
asctime, _wasctime
gmtime, _gmtime32, _gmtime64
localtime, _localtime32, _localtime64
_mkgmtime, _mkgmtime32, _mkgmtime64
time, _time32, _time64