difference de date

difference de date - PHP - Programmation

Marsh Posté le 12-07-2005 à 17:28:56    

voila mon soucis:
j'ai 2 dates et je voudrais savoir le nombre de jours ouvrés les separant,
j'ai trouve une fonction qui me dit si c'ets un jour ferié et je l'ai adapté  
mais ca ne fonctionne pas , j'ai toujours des jours ferié!!!!!
en gros je ne travaille plus!!!! ;)  
 
voila la fonction qui donne les jour feries:
 

Code :
  1. function jour_ferie($date){
  2. // Donner un timestamp unix en paramètre
  3. // Retourne si jour_férié ou week-end
  4.       $jour = date("d", $date);
  5.       $mois = date("m", $date);
  6.       $annee = date("Y", $date);
  7.       if($jour == 1 && $mois == 1) return 0; // 1er janvier
  8.       if($jour == 1 && $mois == 5) return 0; // 1er mai
  9.       if($jour == 8 && $mois == 5) return 0; // 5 mai
  10.       if($jour == 14 && $mois == 7) return 0; // 14 juillet
  11.       if($jour == 15 && $mois == 8) return 0; // 15 aout
  12.       if($jour == 1 && $mois == 11) return 0; // 1 novembre
  13.       if($jour == 11 && $mois == 11) return 0; // 11 novembre
  14.       if($jour == 25 && $mois == 12) return 0; // 25 décembre
  15.       $date_paques = easter_date($annee);
  16.       $jour_paques = date("d", $date_paques);
  17.       $mois_paques = date("m", $date_paques);
  18.       if($jour_paques == $jour && $mois_paques == $mois) return 0; // Pâques
  19.       $date_ascension = mktime(date("H", $date_paques),
  20.                                date("i", $date_paques),
  21.                                date("s", $date_paques),
  22.                                date("m", $date_paques),
  23.                                date("d", $date_paques) + 38,
  24.                                date("Y", $date_paques)
  25.                               );
  26.       $jour_ascension = date("d", $date_ascension);
  27.       $mois_ascension = date("m", $date_ascension);
  28.       if($jour_ascension == $jour && $mois_ascension == $mois) return 0; // Ascension
  29.       $date_pentecote = mktime(date("H", $date_ascension),
  30.                                date("i", $date_ascension),
  31.                                date("s", $date_ascension),
  32.                                date("m", $date_ascension),
  33.                                date("d", $date_ascension) + 11,
  34.                                date("Y", $date_ascension)
  35.                               );
  36.       $jour_pentecote = date("d", $date_pentecote);
  37.       $mois_pentecote = date("m", $date_pentecote);
  38.       if($jour_pentecote == $jour && $mois_pentecote == $mois) return 0; // Pentecote
  39.       $jour_julien = unixtojd($date);
  40.       $jour_semaine = jddayofweek($jour_julien, 0);
  41.       if($jour_semaine == 0 || $jour_semaine == 6) return 0; // Jour de la semaine (0 pour dimanche et 6 pour samedi)
  42. }


et voila la boucle pour comparer jour apres jour:

Code :
  1. //calcul du nombre de jour
  2. $Date1 = mktime( 0, 0, 0, $Mois1, $Jour1, $Annee1 );
  3. $Date2 = mktime( 0, 0, 0, $Mois2, $Jour2, $Annee2 );
  4. $nbJour = floor(($Date2 - $Date1) / (60*60*24));
  5. $totjour = $nbJour;
  6. for ($i=0;$i<$nbJour;$i++){
  7. if (jour_ferie($Date1)==0){
  8.  $totjour= $totjour-1;
  9. }
  10. $Date1+= 86400;
  11. }


le pb et qu'il rentre tjs dans la boucle if
donc au final j'ai toujours 0 jours
ou est mon erreur?
ou avez vous une autre solution plus simple?

Reply

Marsh Posté le 12-07-2005 à 17:28:56   

Reply

Marsh Posté le 12-07-2005 à 17:31:26    

Avec que des "return 0", ta fonction risque pas de retourner autre chose que 0.  [:mlc]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 12-07-2005 à 17:33:13    

Doit manquer un return 1 tout à la fin.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-07-2005 à 11:02:50    

yes ca marche , merci! je l'avais meme pas vu

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed