Namespaces
Variants

mktime

From cppreference.net
Défini dans l'en-tête <time.h>
time_t mktime ( struct tm * arg ) ;

Renormalise l'heure locale exprimée sous forme d'un struct tm et la convertit également en temps depuis l'époque comme un objet time_t . arg - > tm_wday et arg - > tm_yday sont ignorés. Les valeurs dans arg ne sont pas vérifiées pour détecter les dépassements de plage.

Une valeur négative de arg - > tm_isdst amène mktime à tenter de déterminer si l'heure d'été était en vigueur au moment spécifié.

Si la conversion en time_t réussit, l'objet arg est modifié. Tous les champs de arg sont mis à jour pour correspondre à leurs plages appropriées. arg - > tm_wday et arg - > tm_yday sont recalculés en utilisant les informations disponibles dans les autres champs.

Table des matières

Paramètres

arg - pointeur vers un tm objet spécifiant l'heure calendaire locale à convertir

Valeur de retour

Le temps écoulé depuis l'époque comme un objet time_t en cas de succès, ou - 1 si arg ne peut pas être représenté comme un objet time_t (POSIX requiert également que EOVERFLOW soit stocké dans errno dans ce cas).

Notes

Si l'objet struct tm a été obtenu à partir de la fonction POSIX strptime ou d'une fonction équivalente, la valeur de tm_isdst est indéterminée et doit être définie explicitement avant d'appeler mktime .

Exemple

#define _POSIX_C_SOURCE 200112L // for setenv on gcc
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific
    struct tm tm = *localtime(&(time_t){time(NULL)});
    printf("Today is           %s", asctime(&tm));
    printf("(DST is %s)\n", tm.tm_isdst ? "in effect" : "not in effect");
    tm.tm_mon -= 100;  // tm_mon is now outside its normal range
    mktime(&tm);       // tm_isdst is not set to -1; today's DST status is used
    printf("100 months ago was %s", asctime(&tm));
    printf("(DST was %s)\n", tm.tm_isdst ? "in effect" : "not in effect");
}

Sortie possible :

Today is           Fri Apr 22 11:53:36 2016
(DST is in effect)
100 months ago was Sat Dec 22 10:53:36 2007
(DST was not in effect)

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.27.2.3 La fonction mktime (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.27.2.3 La fonction mktime (p: 285-286)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.27.2.3 La fonction mktime (p: 390-391)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.23.2.3 La fonction mktime (p: 340-341)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.12.2.3 La fonction mktime

Voir aussi

convertit le temps depuis l'époque en temps calendaire exprimé en heure locale
(fonction)