merci
//Fonction donner heure et jour de levée d'option
function Date_Levee_Option($Date_Enregistree)
{
/* Decoupage de la date */
$Annee_Enregistre_Chiffre = substr($Date_Enregistree, 0, 4);
$Mois_Enregistre_Chiffre = substr($Date_Enregistree, 5, 2);
$Jour_Enregistre_Chiffre = substr($Date_Enregistree, 8, 2);
$Heure_Enregistree = substr($Date_Enregistree, 11, 2);
$Minutes_Enregistree = substr($Date_Enregistree, 14, 2);
$Secondes_Enregistrees = substr($Date_Enregistree, 17, 2);
$Jour_Enregistre = getJour($Date_Enregistree);
$dateAvecOption = finAbonnement($Jour_Enregistre_Chiffre,$Mois_Enregistre_Chiffre,$Annee_Enregistre_Chiffre,ajouterJourOption($Jour_Enregistre));
$explodeDate = explode('-',$dateAvecOption);
$Jour_Enregistre_Chiffre = $explodeDate[2];
$Mois_Enregistre_Chiffre = $explodeDate[1];
$Annee_Enregistre_Chiffre = $explodeDate[0];
// Si jour ferié reporter au lendemain
while(!est1JourOuvrable($Jour_Enregistre_Chiffre, $Mois_Enregistre_Chiffre, $Annee_Enregistre_Chiffre))
{
$dateAvecOption = finAbonnement($Jour_Enregistre_Chiffre,$Mois_Enregistre_Chiffre,$Annee_Enregistre_Chiffre,1);
$explodeDate = explode('-',$dateAvecOption);
$Jour_Enregistre_Chiffre = $explodeDate[2];
$Mois_Enregistre_Chiffre = $explodeDate[1];
$Annee_Enregistre_Chiffre = $explodeDate[0];
// Si la nouvelle date est un week end on reporte au lundi
$nouveauJour = getJour($Annee_Enregistre_Chiffre."-".$Mois_Enregistre_Chiffre."-".$Jour_Enregistre_Chiffre);
if($nouveauJour == 6 || $nouveauJour == 0) $Jour_Enregistre_Chiffre = $Jour_Enregistre_Chiffre + ajouterJourOption($nouveauJour);
}
// Calcul de l'heure mise à jour
$jourFinal = getJour($Annee_Enregistre_Chiffre."-".$Mois_Enregistre_Chiffre."-".$Jour_Enregistre_Chiffre);
if($jourFinal == 1)
{
if($Heure_Enregistree <= 12) {
$Heure = "12:00:00";
}
else {
$Heure = $Heure_Enregistree.":".$Minutes_Enregistree.":".$Secondes_Enregistrees;
}
}
else
{
$Heure = date('H:i:s');
}
((int)$Jour_Enregistre_Chiffre < 10) ? $j = "0".$Jour_Enregistre_Chiffre : $j = $Jour_Enregistre_Chiffre;
((int)$Mois_Enregistre_Chiffre < 10) ? $m = "0".$Mois_Enregistre_Chiffre : $m = $Mois_Enregistre_Chiffre;
return $Date_Enregistrement = $Annee_Enregistre_Chiffre."-".$m."-".$j." ".$Heure;
}
// Calcul de l'ajour du nombre de jour
function ajouterJourOption($jour)
{
switch($jour)
{
case 1:
$Jour_MAJ = 3;
break;
case 2:
$Jour_MAJ = 3;
break;
case 3:
$Jour_MAJ = 5;
break;
case 4:
$Jour_MAJ = 4;
break;
case 5:
$Jour_MAJ = 4;
break;
case 6:
$Jour_MAJ = 2;
break;
case 0:
$Jour_MAJ = 1;
break;
}
return $Jour_MAJ;
}
function getJour($date)
{
$timestamp = strtotime($date);
$jour = date('w',$timestamp);
return $jour;
}
function est1JourOuvrable($jour, $mois, $annee, $alsace=false){
$estFerier = false;
// calcul des jours feries pour un seul mois.
if (mktime(12,0,0,(int)$mois,(int)$jour,(int)$annee) == -1) { return false; }
list($mois, $annee) = explode('-', date('m-Y', mktime(12,0,0,(int)$mois, 1, (int)$annee)));
$annee = intval($annee);
$mois = intval($mois);
// une constante
$jourEnSecondes = 3600*24;
// les jours fixes
$ferie['Jour de l\'An'][1] = 1;
$ferie['Armistice 1939-1945'][5] = 8;
$ferie['Toussaint'][11] = 1;
$ferie['Armistice 1914-1918'][11] = 11;
$ferie['Assomption'][8] = 15;
$ferie['Fête du travail '][5] = 1;
$ferie['Fête nationale française'][7] = 14;
$ferie['Noël'][12] = 25;
// quelques fetes mobiles
$lundi_de_paques['mois'] = date( 'n', easter_date($annee)+1*$jourEnSecondes);
$lundi_de_paques['jour'] = date( 'j', easter_date($annee)+1*$jourEnSecondes);
$lundi_de_paques['nom'] = 'Lundi de Pâques';
$ascencion['mois'] = date( 'n', easter_date($annee)+39*$jourEnSecondes);
$ascencion['jour'] = date( 'j', easter_date($annee)+39*$jourEnSecondes);
$ascencion['nom'] = 'Jeudi de l\'Ascenscion';
/*
$vendredi_saint['mois'] = date( 'n', easter_date($an)-2*$jourEnSecondes);
$vendredi_saint['jour'] = date( 'j', easter_date($an)-2*$jourEnSecondes);
$vendredi_saint['nom'] = 'Vendredi Saint';
*/
$lundi_de_pentecote['mois'] = date( 'n', easter_date($annee)+50*$jourEnSecondes);
$lundi_de_pentecote['jour'] = date( 'j', easter_date($annee)+50*$jourEnSecondes);
$lundi_de_pentecote['nom'] = 'Lundi de Pentecôte';
$ferie[$lundi_de_paques['nom']][$lundi_de_paques['mois']] = $lundi_de_paques['jour'];
$ferie[$lundi_de_pentecote['nom']][$lundi_de_pentecote['mois']] = $lundi_de_pentecote['jour'];
$ferie[$ascencion['nom']][$ascencion['mois']] = $ascencion['jour'];
// if ($alsace) $ferie[$vendredi_saint['nom'].' (Alsace)'][$vendredi_saint['mois']]= $vendredi_saint['jour'];
// reponse
while( list($nom, $date)=each($ferie) ){
if ( $date[$mois]==$jour ){
$estFerier = true;
}
}
//test jour ouvrable oui/non
return !( $estFerier );
}
function dateSuivante($jour, $mois, $annee, $sep='/')
{
$jour = (int)$jour;
$mois = (int)$mois;
$annee = (int)$annee;
if(!checkdate($mois,$jour,$annee)) return false;
if(checkdate($mois,($jour+1),$annee)) return ($jour+1).$sep.$mois.$sep.$annee;
if(checkdate($mois+1,1,$annee)) return '1'.$sep.($mois+1).$sep.$annee;
if(checkdate(1,1,$annee+1)) return '1'.$sep.'1'.$sep.($annee+1);
}
function finAbonnement($jourDeb, $moisDeb, $anneeDeb, $nbJours)
{
if(!checkdate($moisDeb, $jourDeb, $anneeDeb)) return false;
$jourFinAbo = $jourDeb;
$moisFinAbo = $moisDeb;
$anneeFinAbo = $anneeDeb;
for($i=1; $i<=$nbJours; $i++){
$dateS = dateSuivante($jourFinAbo,$moisFinAbo,$anneeFinAbo);
$tmp = explode('/', $dateS);
$jourFinAbo = $tmp[0];
$moisFinAbo = $tmp[1];
$anneeFinAbo = $tmp[2];
}
return $anneeFinAbo.'-'.$moisFinAbo.'-'.$jourFinAbo;
}