Delen via


mktime, _mktime32_mktime64

Converteer de lokale tijd naar een kalenderwaarde.

Syntaxis

time_t mktime( // See note in remarks section about linkage
   struct tm *timeptr
);
__time32_t _mktime32(
   struct tm *timeptr
);
__time64_t _mktime64(
   struct tm *timeptr
);

Parameterwaarden

timeptr
Aanwijzer naar tijdstructuur; zie asctime.

Retourwaarde

_mktime32 retourneert de opgegeven kalendertijd die is gecodeerd als een waarde van het type time_t. Als timeptr verwijst naar een datum vóór middernacht, 1 januari 1970 of als de kalendertijd niet kan worden weergegeven, _mktime32 wordt -1 cast geretourneerd om te typen time_t. Wanneer wordt timeptr verwezen _mktime32 naar een datum na 23:59:59 januari 18 januari 2038, Coordinated Universal Time (UTC), wordt -1 cast geretourneerd om te typentime_t.

_mktime64 retourneert -1 cast naar type __time64_t als timeptr verwijst naar een datum na 23:59:59, 31 december 3000, UTC.

Opmerkingen

_mktime32 _mktime64 Met mktimede functies wordt de opgegeven tijdstructuur (mogelijk onvolledig) geconverteerd naar timeptr een volledig gedefinieerde structuur met genormaliseerde waarden en wordt deze geconverteerd naar een time_t kalendertijdwaarde. De geconverteerde tijd heeft dezelfde codering als de waarden die door de time functie worden geretourneerd. De oorspronkelijke waarden van de tm_wday structuur en tm_yday onderdelen worden timeptr genegeerd en de oorspronkelijke waarden van de andere onderdelen zijn niet beperkt tot hun normale bereiken.

mktime is een inline-functie die gelijk is aan _mktime64, tenzij _USE_32BIT_TIME_T gedefinieerd, in welk geval het equivalent is aan _mktime32.

Na een aanpassing aan UTC _mktime32 worden datums verwerkt van middernacht, 1 januari 1970 tot 23:59:59: 18 januari 2038, UTC. _mktime64 verwerkt datums van middernacht, 1 januari 1970 tot 23:59:59, 31 december 3000. Deze aanpassing kan ertoe leiden dat deze functies -1 (casten naar time_t, __time32_t of __time64_t) retourneren, zelfs als de datum die u opgeeft binnen het bereik valt. Als u bijvoorbeeld in Cairo, Egypte, dat twee uur voor UTC ligt, wordt twee uur eerst afgetrokken van de datum waarin u opgeeft timeptr; de aftrekking kan nu uw datum buiten het bereik plaatsen.

Deze functies kunnen worden gebruikt om een tm structuur te valideren en in te vullen. Als dit lukt, worden met deze functies de waarden van tm_wday en tm_yday indien van toepassing ingesteld en worden de andere onderdelen ingesteld op de opgegeven kalendertijd, maar met hun waarden gedwongen tot de normale bereiken. De uiteindelijke waarde van tm_mday deze waarde wordt pas ingesteld als tm_mon deze tm_year wordt bepaald. Wanneer u een tm structuurtijd opgeeft, stelt u het tm_isdst veld in op:

  • Nul (0) om aan te geven dat de standaardtijd van kracht is.

  • Een waarde groter dan 0 om aan te geven dat zomertijd van kracht is.

  • Een waarde die kleiner is dan nul om de C-runtimebibliotheekcode te berekenen, ongeacht of de standaardtijd of zomertijd van kracht is.

De C-runtimebibliotheek bepaalt het zomertijdgedrag van de TZ omgevingsvariabele. Als TZ deze niet is ingesteld, wordt de Win32-API-aanroep GetTimeZoneInformation gebruikt om informatie over de zomertijd van het besturingssysteem op te halen. Als de aanroep mislukt, gaat de bibliotheek ervan uit dat de regels van de Verenigde Staten voor het implementeren van de zomertijd worden gebruikt. tm_isdst is een verplicht veld. Als deze niet is ingesteld, is de waarde ervan niet gedefinieerd en is de retourwaarde van deze functies onvoorspelbaar. Als timeptr verwijst naar een tm structuur die wordt geretourneerd door een eerdere aanroep naar asctime, gmtimeof localtime (of varianten van deze functies), bevat het tm_isdst veld de juiste waarde.

De gmtime functies en localtime (en_gmtime64_gmtime32, _localtime32en, en_localtime64) gebruiken één buffer per thread voor de conversie. Als u deze buffer opgeeft aan mktime, _mktime32 of _mktime64, wordt de vorige inhoud vernietigd.

Deze functies valideren hun parameter. Als timeptr dit een null-aanwijzer is, wordt de ongeldige parameterhandler aangeroepen, zoals beschreven in parametervalidatie. Als de uitvoering mag worden voortgezet, retourneren de functies -1 en worden ingesteld op errnoEINVAL.

De globale status van deze functie is standaard gericht op de toepassing. Als u dit gedrag wilt wijzigen, raadpleegt u de globale status in de CRT.

Opmerking

Wanneer u Windows SDK versie 10.0.26100.6901 en Visual Studio 2026 of hoger samen gebruikt, mktime is dit niet meer static inline (interne koppeling). In plaats daarvan is inline het (externe koppeling).
Als u wilt terugkeren naar het vorige gedrag, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 voordat u CRT-headers op te geven. _STATIC_INLINE_UCRT_FUNCTIONS Standaard is ingesteld op 0.
Deze wijziging verhoogt de UCRT-conformiteit met de C++-standaard en verbetert de compatibiliteit met C++-modules.

Requirements

Routine Vereiste header
mktime <time.h>
_mktime32 <time.h>
_mktime64 <time.h>

Zie Compatibiliteit voor meer compatibiliteitsinformatie.

Libraries

Alle versies van de C-runtimebibliotheken.

Example

// 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" );
}

Voorbeelduitvoer

Current time is Fri Apr 25 13:34:07 2003

In 20 days the time will be Thu May 15 13:34:07 2003

Zie ook

Tijdbeheer
asctime, _wasctime
gmtime, _gmtime32_gmtime64
localtime, _localtime32_localtime64
_mkgmtime, _mkgmtime32_mkgmtime64
time, _time32_time64