Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Convertit l'heure locale en valeur de calendrier.
Syntaxe
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
);
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 _mktime32 les _mktime64 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_wday des tm_yday 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. Si timeptr est un pointeur null, le gestionnaire de paramètres non valides 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.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Note
Lorsque vous utilisez le Kit de développement logiciel (SDK) Windows version 10.0.26100.6901 et Visual Studio 2026 ou version ultérieure, mktime il n’est plus static inline (liaison interne). Au lieu de cela, il s’agit inline (liaison externe).
Pour revenir au comportement précédent, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 avant d’inclure tous les en-têtes CRT. Par défaut, _STATIC_INLINE_UCRT_FUNCTIONS est défini sur 0.
Cette modification augmente la conformité UCRT avec la norme C++ et améliore la compatibilité avec les modules C++.
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