Nous recommandons d’utiliser Visual Studio 2017

mktime, _mktime32, _mktime64

 

Date de publication : novembre 2016

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Convertit l'heure locale en valeur de calendrier.

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

Paramètres

timeptr
Pointeur vers une structure d’heure ; consultez la page asctime.

_mktime32Retourne l’heure de calendrier spécifiée encodée sous la forme d’une valeur de type time_t. Si timeptr fait référence à une date antérieure au 1er janvier 1970 à minuit ou si l’heure de calendrier ne peut pas être représentée, _mktime32 retourne – 1 castée en type time_t. Lorsque vous utilisez _mktime32 et timeptr référence une date postérieure 23:59:59 18 janvier 2038, temps universel coordonné (UTC), elle retourne – 1 castée en type time_t.

_mktime64Retourne – 1 castée en type __time64_t si timeptr fait référence à une date postérieure à 23:59:59 le 31 décembre 3000, UTC.

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

mktime est une fonction inline équivalente à _mktime64, sauf si _USE_32BIT_TIME_T est défini. Dans ce cas, elle équivaut à _mktime32.

Après un ajustement au format UTC, _mktime32 gère les dates à partir du 1er janvier 1970 à minuit à 23:59:59 18 janvier 2038, 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 dans Caire, Égypte, toutes les deux heures avant l’heure UTC, deux heures seront d’abord soustraites à partir de la date que vous spécifiez dans timeptr; cela peut maintenant placer votre date de la plage.

Ces fonctions peuvent être utilisées pour valider et compléter une structure tm. 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 que tm_mon et tm_year ne sont pas déterminés. 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 Runtime C détermine le comportement d’heure à partir de la TZ variable d’environnement. Si TZ n’est pas défini, l’appel d’API Win32 GetTimeZoneInformation est utilisée pour obtenir des informations au moment de l’heure du système d’exploitation. En cas d'échec, la bibliothèque part du principe que les règles de calcul de l'heure d'été sont celles des États-Unis. 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 pointe vers un tm structure retournée par un appel précédent à asctime, gmtime, ou localtime (ou des variantes de ces fonctions), le tm_isdst champ contient la valeur correcte.

Notez que gmtime et localtime (ainsi que _gmtime32, _gmtime64, _localtime32 et _localtime64) utilise une seule mémoire tampon 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. Si timeptr est un pointeur null, le Gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent -1 et définissent errno avec la valeur EINVAL.

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

Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.

Toutes les versions des bibliothèques Runtime C.

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

Current time is Fri Apr 25 13:34:07 2003  
  
In 20 days the time will be Thu May 15 13:34:07 2003  

DateTimeOffset

Gestion du temps
asctime, _wasctime
gmtime, _gmtime32, _gmtime64
LocalTime, _localtime32, _localtime64
_mkgmtime, _mkgmtime32, _mkgmtime64
heure, _time32, _time64

Afficher: