mktime, _mktime32, _mktime64

Convertit l'heure locale en valeur de calendrier.

Syntaxe

time_t mktime(
   struct tm *timeptr
);
__time32_t _mktime32(
   struct tm *timeptr
);
__time64_t _mktime64(
   struct tm *timeptr
);

Paramètres

timeptr
Pointeur vers la structure temporelle ; voir asctime.

Valeur retournée

_mktime32 retourne l’heure de calendrier spécifiée encodée en tant que valeur de type time_t. Si timeptr elle fait référence à une date antérieure à minuit, le 1er janvier 1970 ou si l’heure du calendrier ne peut pas être représentée, _mktime32 retourne -1 cast en type time_t. Lorsque vous utilisez _mktime32 et si timeptr référence une date après 23 :59 :59 :59 janvier 18, 2038, temps universel coordonné (UTC), elle retourne -1 cast en type time_t.

_mktime64 retourne -1 cast en type __time64_t si timeptr référence une date après 23 :59 :59, le 31 décembre 3000, UTC.

Notes

Les mktimefonctions et _mktime64 les _mktime32 fonctions convertissent la structure de temps fournie (éventuellement incomplète) pointée par timeptr une structure entièrement définie avec des valeurs normalisées, puis la convertit en time_t valeur de temps de calendrier. L’heure convertie a le même encodage que les valeurs retournées par la time fonction. Les valeurs d’origine des composants et tm_yday des tm_wday composants de la timeptr structure sont ignorées et les valeurs d’origine des autres composants ne sont pas limitées à leurs plages normales.

mktime est une fonction inline qui équivaut à _mktime64, sauf si _USE_32BIT_TIME_T elle est définie, auquel cas elle est équivalente à _mktime32.

Après un ajustement à l’heure UTC, _mktime32 gère les dates comprises entre le 1er janvier 1970 à minuit et le 18 janvier 2038 à 23:59:59, heure UTC. _mktime64 gère les dates comprises entre le 1er janvier 1970 à minuit et le 31 décembre 3000 à 23:59:59. Cet ajustement peut amener ces fonctions à retourner -1 (cast en time_t, __time32_t ou __time64_t) même si la date que vous spécifiez se situe dans la plage. Par exemple, si vous êtes au Caire, en Égypte, qui est de deux heures avant UTC, deux heures seront d’abord soustraites de la date que vous spécifiez timeptr; la soustraction peut maintenant mettre votre date hors limites.

Ces fonctions peuvent être utilisées pour valider et remplir une tm structure. Si elles aboutissent, ces fonctions définissent si nécessaire les valeurs de tm_wday et tm_yday, ainsi que les autres composants afin de représenter l'heure de calendrier spécifiée, mais avec des valeurs maintenues dans les plages normales. La valeur finale de tm_mday n’est pas définie tant qu’elle tm_montm_year n’est pas déterminée. Au moment de spécifier une heure de structure tm, affectez au champ tm_isdst l'une des valeurs suivantes :

  • zéro (0) pour indiquer que l'heure d'hiver est active ;

  • une valeur supérieure à 0 pour indiquer que l'heure d'été est active ;

  • une valeur inférieure à zéro pour que le code de la bibliothèque Runtime C calcule si l'heure active est l'heure d'hiver ou l'heure d'été.

La bibliothèque d’exécution C détermine le comportement de temps d’été de la variable d’environnement TZ . S’il TZ n’est pas défini, l’appel GetTimeZoneInformation d’API Win32 est utilisé pour obtenir les informations de temps d’été du système d’exploitation. Si l’appel échoue, la bibliothèque suppose que les règles de États-Unis pour implémenter le calcul de l’heure d’été sont utilisées. tm_isdst est un champ obligatoire. S'il n'est pas défini, sa valeur est indéfinie et la valeur de retour de ces fonctions est imprévisible. Si timeptr elle pointe vers une tm structure retournée par un appel précédent à asctime, gmtimeou localtime (ou variantes de ces fonctions), le tm_isdst champ contient la valeur correcte.

Les gmtime fonctions et localtime (et_gmtime32, , _gmtime64_localtime32et , et _localtime64) utilisent une mémoire tampon unique par thread pour la conversion. Si vous fournissez cette mémoire tampon à mktime, _mktime32 ou _mktime64, le contenu précédent est détruit.

Ces fonctions valident leur paramètre. S’il timeptr s’agit d’un pointeur Null, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent -1 et définissent errno avec la valeur EINVAL.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
mktime <time.h>
_mktime32 <time.h>
_mktime64 <time.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Bibliothèques

Toutes les versions des bibliothèques Runtime C.

Exemple

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

Exemple de sortie

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

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

Voir aussi

Gestion des horaires
asctime, _wasctime
gmtime, _gmtime32, _gmtime64
localtime, _localtime32, _localtime64
_mkgmtime, _mkgmtime32, _mkgmtime64
time, _time32, _time64