Forum Clubic

Comparaison de dates ... - C, C++, C#, etc

bon j’explique mon prob :sweet:

j’ai une durée de temps => dr1 (entre datetime1 et datetime2)
et j’en ai une autre => dr2 (entre datetime3 et datetime4)

comment savoir si dr1 est passé par dr2 ?!
ça doit être facile mais c’est la fin de la semaine et mon cerveau rame :smiley:


#include <stdio.h>
#include <time.h>

int main(void)
{
struct tm date_one, date_two;
time_t time_elapsed_one, time_elapsed_two;

      date_one.tm_year = 2006 - 1900;
      date_one.tm_mon = 10;
      date_one.tm_mday = 28;
      date_one.tm_hour = 0;
      date_one.tm_min = 0;
      date_one.tm_sec = 0;
      date_one.tm_isdst = -1;
      
      date_two.tm_year = 2006 - 1900;
      date_two.tm_mon = 10;
      date_two.tm_mday = 26;
      date_two.tm_hour = 0;
      date_two.tm_min = 0;
      date_two.tm_sec = 0;
      date_two.tm_isdst = -1;

      time_elapsed_one = mktime(&date_one);
      time_elapsed_two = mktime(&date_two);
      if (time_elapsed_one < time_elapsed_two)
         printf("date_one est plus ancien\n");
      else if (time_elapsed_one > time_elapsed_two)
         printf("date_one est plus recent\n");       
      else                  
         printf("date_one est la meme date que date_two, paufine la comparaison (cf les heures)\n");
     
     fgetc(stdin);
     return 0;
}

non :frowning: en fait ton code est la comparaison de deux dates …

une petite fonction qui renvoie true ou false … :
http://img72.imageshack.us/img72/1405/datetimeyo6.gif

hmm en dessinant je crois que j’ai trouvé huhu … :ane:

un truc dans ce genre non ?
return !(datetime1 > datetime4 || datetime2 < datetime3);

J’ai un dout, c’est plutôt l’énoncé dr1 “est passée par” dr2: tu veux dire est-ce qu’il y a une intersection dans le temps entre ces 2 durées d’après le schéma? (est-ce que les évènements se chevauchent dans le temps?
ce qui revient à se demander:

  • est-ce que soit
    . datetime3 est compris entre datetime1 et datetime2 (cas ou dr2 commencent pendant dr1)
    . ou datetime4 est compris entre datetime1 et datetime2 (cas où dr2 finit pendant dr1)
    . ou datetime3 est avant datetime1 ET datetime4 est après datetime2 (cas où dr2 commence et finit pendant le déroulement de dr1)

edit: oui, du coup en excluant les cas restant: dr2 se produit après ou dr2 se produit avant dr1, on obtient le même résultat, ce que tu fait.

là normalement, on traite tous les cas.
:slight_smile: