Fonctionnement bizarre DateIntervale
Bonjours ,
Alors je dois faire un calendrier et en fonction de la date je borne du lundi au vendredi .
En ayant chercher sur le net j'ai trouver plusieurs solution en utilisant "timestamp"/"mktime".
J'ai décidé d'utiliser le jour de la semaine et d'appliquer un DateIntervale (pas vraiment certain que c'est fait pour cela).
Et voila le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
try
{
$fuseau="Europe/Paris";
$tz = new DateTimeZone($fuseau);
}
catch(Exception $e)
{
exit($e->getMessage());
}
$date= new DateTime("now",$tz);
$date_format=$date->format('d-m-Y');
$jours=$date->format("N");
//Traitement de debut semaine
if ($jours==1)
{
$debut=$date_format;
}
elseif ($jours>1 && $jours<6)
{
$decal=$jours-1;
$debut=$date->sub(new DateInterval("P".$decal."D"));
$debut=$debut->format('d-m-Y');
}
elseif ($jours>5)
{
$decal=(7-$jours)+1;
$debut=$date->add(new DateInterval("P".$decal."D"));
$debut=$debut->format('d-m-Y');
}
//Traitement de fin semaine
if ($jours<6)
{
$decal=4-$jour;
$fin=$date->add(new DateInterval("P".$decal."D"));
$fin=$fin->format('d-m-Y');
}
elseif($jours>5)
{
$fin=$date->add(new DateInterval("P4D"));
$fin=$fin->format('d-m-Y');
} |
Le soucis viens du dernier elseif qui traite la fin de semaine , il ne suit aucune logique " j'ai trouver P4D de façon empirique".
Le traitement des jours weekend renvois au vendredi prochain , mais la logique voudrais que j'ajoute 6 ou 5 jours a la date dans le cas ou on tombe sur un samedi ou un dimanche .
Dans mon cas il faut un P4D dans tout les cas pour avoir le vendredi prochains , Pourquoi ???
Merci !!!