Comment puis-je contrer si un événement est planifié dans un mois défini
Bonjour à tous,
J'ai une série d'événement qui sont défini par une date de début et une date de fin.
J'ai aussi un peit formulaire ou j'indique une date.
Cette fonction va comparer si la date choici se trouve entre la date de début et la date de fin
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
compateTime(new DateTime($stage_start), new DateTime($stage_end), new DateTime($date))
function compateTime($a, $b, $c){
$c1 = $c->setTime(23, 59, 59);
($a < $c1) ? $compare_deb = true : $compare_deb = false;
$c2 = $c->setTime(00,00,01);
($c2 < $b) ? $compare_fin = true : $compare_fin = false;
if($compare_deb==true && $compare_fin==true){
return true;
}else{
// echo "FALSE<br>";
return false;
}
} |
Le problème que j'arrive pas résoudre, c'est que dois modifier mon critere de recherche. C'est a dire, on ne veux plus sélectionner une date comme '2016-12-06 20:10:00" mais un mois.
Et je n'arrive pas à modifier ma fonction, ci-dessus.
Ce que j'ai essayer de faire est le suivant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
$mois="02";
compateTime(new DateTime($stage_start), new DateTime($stage_end), $mois)
function compateTime($a, $b, $c){
$c1 = $c->setTime(23, 59, 59);
($a < $c1) ? $compare_deb = true : $compare_deb = false;
$c2 = $c->setTime(00,00,01);
($c2 < $b) ? $compare_fin = true : $compare_fin = false;
if($compare_deb==true && $compare_fin==true){
return true;
}else{
// echo "FALSE<br>";
return false;
}
} |
Mais là ca bug car à mois doit etre sous ce fomat
$mois ="2016-".$mois."-01 20:10:10".
L'autre problème, c'est que si je recherche mes événements pas lieu et que je laisse mon critere de recherche par mois, vide, j'aurai
Code:
$mois ="2016-00-01 20:10:10";
ou
Code:
$mois ="2016--01 20:10:10".
ce qui n'est pas correct car le mois 00 n'existe pas, et l'autre format n'est pas valide..
Aussi, dans ma fonction CompareTime(), je dois aussi modifier $a et $b, pour que le jour de $a soit modifier à 01, pour le premier jour du mois, et $b soit modifier pour le jour soit le dernier jour du mois.
Et que se passe-t-il si je met 31 et qu'on filtre le mois de février?
Alors j'aimerais savoir comment vous modiferiez ce code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
$mois = "02";
compateTime(new DateTime($stage_start), new DateTime($stage_end), $mois)
function compateTime($a, $b, $c){
$c1 = $c->setTime(23, 59, 59); // Ca ne jouera pas
($a < $c1) ? $compare_deb = true : $compare_deb = false;
$c2 = $c->setTime(00,00,01);
($c2 < $b) ? $compare_fin = true : $compare_fin = false;
if($compare_deb==true && $compare_fin==true){
return true;
}else{
// echo "FALSE<br>";
return false;
}
} |
pour que le fonction me retourne true si le mois de la date de début ou le mois la date de fin est identique à $c, soit 02, dans ce cas?
Y-a-t-il pas un moyen d'extraire la mois de $a et le mois de $b pour après simplement le comparer avec $c?
Merci pour vos lumières