mktime, _mktime32, _mktime64
Convertit l'heure locale à une 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 pour un dépassement de la structure ; consultez l' asctime.
Valeur de retour
_mktime32 retourne le délai spécifié de calendrier encodé comme valeur de type time_t.Si le timeptr référence une date avant minuit, le 1er janvier 1970, ou si le temps de calendrier ne peut pas être représenté, _mktime32 retourne – 1 cast en type time_t.Lors de l'utilisation du _mktime32 et si le timeptr référence une date après 3h14 : Le 7 janvier 19, 2038, (UTC) coordinated universal time), il retournera – 1 cast en type time_t.
_mktime64 retournera – 1 cast en type __time64_t si le timeptr référence une date après 23h59 : 59, le 31 décembre, 3000, l'heure UTC.
Notes
mktime, _mktime32 et les fonctions de _mktime64 convertissent la structure fournie de temps (éventuellement incomplète) désignée par le timeptr dans une structure entièrement définie avec des valeurs normalisées puis de le convertit en une valeur d'heure de calendrier d' time_t .le temps converti a le même encodage que les valeurs sont retourné par la fonction de temps .Les valeurs d'origine des composants de tm_wday et de tm_yday de la structure de timeptr 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, à moins que _USE_32BIT_TIME_T défini, auquel cas il est équivalent à _mktime32.
Après un réglage en heure UTC, dates de handles demktime32 _minuit, le le 1er janvier 1970, à 3h14 : 07, le 19 janvier 2038.dates de handles d'_mktime64 de minuit, du 1er 1970 au 23 janvier : 59:59, le 31 décembre, 3000.Ce réglage peut faire pour retourner ces fonctions -1 (transtypage à time_t, à __time32_t ou à __time64_t) bien que la date que vous spécifiez soit dans la plage.Par exemple, si vous avez l'Caire, égypte, qui est de deux heures avant l'heure UTC, deux heures est d'abord soustraite de la date que vous spécifiez dans le timeptr; cela peut maintenant mettre votre date hors limites.
Ces fonctions peuvent être utilisées pour valider et effectuer une structure de tm .En cas de réussite, ces fonctions définissent les valeurs de tm_wday et de tm_yday comme appropriées et définies les autres composants pour représenter le délai spécifié de calendrier, mais avec leurs valeurs converties aux plages normales.La dernière valeur de tm_mday n'est pas définie tant que tm_mon et tm_year soient déterminés.En spécifiant l'heure de structure de tm , définissez le champ de tm_isdst :
Zéro (0) pour indiquer que l'heure d'hiver est appliquée.
Une valeur supérieure à 0 pour indiquer que l'heure d'été est appliquée.
Une valeur inférieure de zéro pour avoir le calcul de code de la bibliothèque Runtime C si l'heure d'hiver ou l'heure d'été est appliquée.
La bibliothèque Runtime C pour déterminer le comportement heure d'été à partir de la variable d'environnement de LA t-z .Si ZH n'est pas défini, l'appel GetTimeZoneInformation API Win32 est utilisé pour obtenir des informations heure d'été du système d'exploitation.Si cela échoue, la bibliothèque suppose que les règles des états-unis pour implémenter le calcul de l'heure d'été sont utilisées.tm_isdst est un champ obligatoire.Si sa valeur, sa valeur est non définie et la valeur de retour de ces fonctions sont imprévisibles.si les points de timeptr à une structure de tm se retournaient par un appel précédent à asctime, gmtime, ou localtime (ou des variantes de ces fonctions), le champ de tm_isdst contient la valeur correcte.
notez cette utilisation d' gmtime et d' localtime (et _gmtime32, _gmtime64, _localtime32, et _localtime64) 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 leurs paramètres.Si le timeptr est un pointeur null, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, les fonctions retournent -1 et errno défini à EINVAL.
Configuration requise
routine |
en-tête requis |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
bibliothèques
toutes les versions de 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" );
}
Résultat de l'exemple
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Équivalent .NET Framework
System::DateTime : : Datetime
Voir aussi
Référence
localtime, _localtime32, _localtime64