Section courante

A propos

Section administrative du site

MKTIME

Fabriquer le temps
Langage C++ ctime (time.h)

Syntaxe

time_t *mktime(struct tm *ptrheure)

Paramètres

Nom Description
ptrheure Ce paramètre permet d'indiquer le temps à traiter

Description

Cette fonction permet de convertir des heures locales en heures normalisé.

Remarques

Exemple

Voici un exemple permettant de calculer le nombre de jours entre deux dates à l'aide de cette fonction :

Essayer maintenant !
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cstring>
  5. #include <cmath>
  6. #include <ctime>
  7.  
  8. int GetNumberDaysBetween2Dates(char *date1, char *date2) {
  9.  struct tm timestamp1,timestamp2;
  10.  sscanf(date1,"%i-%i-%i",&timestamp1.tm_year,&timestamp1.tm_mon,&timestamp1.tm_mday);
  11.  sscanf(date2,"%i-%i-%i",&timestamp2.tm_year,&timestamp2.tm_mon,&timestamp2.tm_mday);
  12.  timestamp1.tm_sec = timestamp1.tm_min = timestamp1.tm_hour = timestamp1.tm_yday = timestamp1.tm_isdst = 0;
  13.  timestamp1.tm_year -= 1900;
  14.  timestamp1.tm_mon--;
  15.  timestamp2.tm_sec = timestamp2.tm_min = timestamp2.tm_hour = timestamp2.tm_yday = timestamp2.tm_isdst = 0;
  16.  timestamp2.tm_year -= 1900;
  17.  timestamp2.tm_mon--;
  18.  return abs(mktime(&timestamp2) - mktime(&timestamp1))/86400; 
  19. }
  20.  
  21. int main() {
  22.  std::cout << "2011-01-01 au 2011-12-31 = " << GetNumberDaysBetween2Dates("2011-1-1","2011-12-31") << " jours" << std::endl;
  23.  std::cout << "2011-12-31 au 2011-01-01 = " << GetNumberDaysBetween2Dates("2011-12-31","2011-1-1") << " jours" << std::endl;
  24.  std::cout << "2011-06-15 au 2011-08-01 = " << GetNumberDaysBetween2Dates("2011-6-15","2011-8-01") << " jours" << std::endl;
  25.  std::cout << "2011-06-15 au 2011-06-19 = " << GetNumberDaysBetween2Dates("2011-6-15","2011-6-19") << " jours" << std::endl;
  26.  std::cout << "2011-06-15 au 2011-06-16 = " << GetNumberDaysBetween2Dates("2011-6-15","2011-6-16") << " jours" << std::endl;
  27.  std::cout << "2011-06-15 au 2011-06-15 = " << GetNumberDaysBetween2Dates("2011-06-15","2011-06-15") << " jours" << std::endl;
  28.  return 0;
  29. }

on obtiendra le résultat suivant :

2011-01-01 au 2011-12-31 =364 jours
2011-12-31 au 2011-01-01 =364 jours
2011-06-15 au 2011-08-01 =47 jours
2011-06-15 au 2011-06-19 =4 jours
2011-06-15 au 2011-06-16 =1 jours
2011-06-15 au 2011-06-15 =0 jours

Voir également

Langage de programmation - C++ - Référence de procédures et fonctions - localtime
Langage de programmation - C++ - Référence de procédures et fonctions - time
Langage de programmation - C - Référence de procédures et fonctions - mktime

Références

Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 733.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 179.

Dernière mise à jour : Lundi, le 3 août 2015