php tableau des dates de jours non fériés

php tableau des dates de jours non fériés - PHP - Programmation

Marsh Posté le 19-08-2008 à 09:55:33    

Bonjour,  
 
 
Je suis en php et j'aimerais réccupérer les dates des jours non fériés entre deux dates et les stpcker dans un tableau, puis pouvoir afficher ces dates en format""Y-m-d".  
Pour l'instant j'ai réussi à stocker dans un tableau les dates des jours entre deux dates mais je sais pas commentfaire pour virer les jours fériers de mon tableau.  
 
Voila les deux fonctions sur lesquelles je me base  
 
function diff_date($jour , $mois , $an , $jour2 , $mois2 , $an2){  
$timestamp2 = mktime(0, 0, 0, $mois, $jour, $an);  
$timestamp = mktime(0, 0, 0, $mois2, $jour2, $an2);  
 
$diff = floor(($timestamp - $timestamp2) / (3600 * 24));  
return $diff;  
}  
 
 
function dateop($jour , $mois , $an , $i){  
$temp = array();  
for($j=0;$j<=$i;$j++){  
$timestamp = mktime(0, 0, 0, $mois, $jour+$j, $an);  
$temp[$j] = date("Y-m-d", $timestamp);  
}  
return $temp;  
}  
 
$nbrdejours = diff_date(11 , 07 , 2008 , 18 , 07 , 2008);  
$tab = array();  
$tab = dateop(11 , 07 , 2008 , $nbrdejours);  
for($k=0;$k<count($tab);$k++){  
echo $tab[$k];  
echo "<br/>";  
}  
 
voila ce code me donne ça  
 
2008-07-11  
2008-07-12  
2008-07-13  
2008-07-14  
2008-07-15  
2008-07-16  
2008-07-17  
2008-07-18  
 
j'aimerais virer les dates de 2008-07-12 2008-07-13 2008-07-14 qui sont des jours fériés.  
 
Merci bcp pour votre aide !!!

Reply

Marsh Posté le 19-08-2008 à 09:55:33   

Reply

Marsh Posté le 19-08-2008 à 10:41:44    

Tu veux aussi enlever les samedis/dimanches ?
Pour les jours fériés, pas d'autre choix que de les rentrer à la main.

Reply

Marsh Posté le 19-08-2008 à 12:07:50    

oui surtout les samedis et dimanhes

Reply

Marsh Posté le 19-08-2008 à 15:12:11    

Merci rengzehn j'ai trouvé le code très interressant, toutefois j'ai voulu l'adapter à ma fonction qui retourne un tableau de dates en ne testant qu'avec les samedi et dimanche mais j'ai un problème d'execution d'une ligne de code : il dit que ça prend plus de trente secondes pour s'executer.
cette ligne la    $timestamp = mktime(0, 0, 0, $mois, $jour+$j, $an);  
 
voila ce que j'ai fait  
 
function jour_ferie($timestampStart, $timestampEnd, $nb)
{
 
    $jour = date("d", $timestampStart);
    $mois = date("m", $timestampStart);
    $an = date("Y", $timestampStart);
    $nbFerie = 0;
    $nbFerie2 = 0;
    $temp = array();  
    while ($timestampStart <= $timestampEnd)
    {
 
   $jour_julien = unixtojd($timestampStart);
   $jour_semaine = jddayofweek($jour_julien, 0);
   if($jour_semaine != 0 || $jour_semaine != 6)
   {
                      for($j=0;$j<=$nb;$j++){  
 
                     $timestamp = mktime(0, 0, 0, $mois, $jour+$j, $an);  
                     $temp[$j] = date("Y-m-d", $timestamp);}
   
 }  }
 
     return $temp;
 
}  

Reply

Marsh Posté le 19-08-2008 à 17:41:18    

Bonjour,
 
J'ai reformulé mon code mais je n'arrive tjs pas à virer les samedis et dimanches.
 
Pleaze si vous avez des idées à me donner , merci bcp!
 
 
function diff_date($jour , $mois , $an , $jour2 , $mois2 , $an2){  
$timestamp2 = mktime(0, 0, 0, $mois, $jour, $an);  
$timestamp = mktime(0, 0, 0, $mois2, $jour2, $an2);  
 
$diff = floor(($timestamp - $timestamp2) / (3600 * 24));  
return $diff;  
}  
 
 
 
function jour_ferie($jour, $mois, $an, $jour2, $mois2, $an2, $nb)
{
     
    $timestampStart= mktime(0, 0, 0, $mois, $jour, $an);  
    $timestampEnd = mktime(0, 0, 0, $mois2, $jour2, $an2);  
    $temp = array();  
    $j=0;
    while ($timestampStart <= $timestampEnd)
    {
 
 $jour_julien = unixtojd($timestampStart);
 $jour_semaine = jddayofweek($jour_julien, 0);
 
 
   
 if($jour_semaine != 0 || $jour_semaine != 6)
 {
 
                     $temp[$j] = date("Y-m-d", $timestampStart);
                     $j++;
                           
  }
 
                     $jour++;
      $timestampStart=mktime(0,0,0,$mois,$jour,$an);
 
 
    }
 
 
     return $temp;
 
}  
 
 
$a=diff_date('11', '07', '2008', '17', '07', '2008');
$tab = array();  
$tab=jour_ferie('11', '07', '2008', '17', '07', '2008', $a);
for($k=0;$k<count($tab);$k++){  
echo $tab[$k];  
echo "<br/>";  
}  
 
?>

Reply

Sujets relatifs:

Leave a Replay

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