Cette fonction calcul le nombre de jours contenus dans la période issue de l'intersection de deux périodes, c'est à dire le nombre de jour appartenant à la fois aux deux périodes.
Source / Exemple :
/************************************************************
- Calcul le nombre de jour contenu dans la période d'intersection
- entre deux périodes (Nombre de jour appartenant aux deux périodes)
- $d1 string : Date de début période 1 (format YYYY-MM-DD)
- $f1 string : Date de fin de la période 1
- $d2 string : Date de début période 2
- $f2 string : Date de fin période 2
- Retour interger : Nombre de jour appartenant aux deux périodes.
function nbJourIntersection ($d1, $f1, $d2, $f2) {
if ( ($d1 >= $d2 && $d1 <= $f2) ||
($f1 >= $d2 && $f1 <= $f2) ||
($d2 >= $d1 && $d2 <= $f1)) {
//*** Il y a intesction entre les deux periodes
if ($d1 >= $d2 && $f1 <= $f2) {
//*** CAS n°1 : periode 1 est inclue dans perdiode 2
$di = $d1;
$fi = $f1;
} else if ($d1 <= $d2 && $f1 >= $f2) {
//*** CAS n°2 : periode 2 est inclue dans perdiode 1
$di = $d2;
$fi = $f2;
} else if ($d2 >= $d1 && $d2 <= $f1) {
//*** CAS n°3 : periode 1 à cheval à gauche sur perdiode 2
$di = $d2;
$fi = $f1;
} else {
//*** CAS n°4 : periode 1 à cheval à droite sur perdiode 2
$di = $d1;
$fi = $f2;
}
// Calcul le nombre de jour sur la periode d'intersection
$arr_di = explode ('-', $di);
$arr_fi = explode ('-', $fi);
$time_di = mktime (0, 0, 0, $arr_di[1], $arr_di[2], $arr_di[0]);
$time_fi = mktime (0, 0, 0, $arr_fi[1], $arr_fi[2], $arr_fi[0]);
$nbJour = round((($time_fi - $time_di) / 60 / 60 / 24)) + 1;
return $nbJour;
} else {
//*** Il n'y a pas intersection entre les deux periodes
return 0;
}
} // nbJourIntersection
Conclusion :
Exemple :
$nbJour = nbJourIntersection ('2011-01-02', '2011-01-10', '2011-01-08', '2011-01-20');
$nbJour contient la valeur 3.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.