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 mktime
fonctions 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_mon
tm_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
, gmtime
ou localtime
(ou variantes de ces fonctions), le tm_isdst
champ contient la valeur correcte.
Les gmtime
fonctions et localtime
(et_gmtime32
, , _gmtime64
_localtime32
et , 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.
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