Comparer deux dates et avoir les alertes
glo
-
spylller Messages postés 395 Date d'inscription Statut Membre Dernière intervention -
spylller Messages postés 395 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Est-ce possible d'avoir les codes sources PHP pour comparer deux dates dont la première est la date de prise de décision (10-03-2016) et la seconde est la date d’exécution de décision(15-03-2016), au cas où on arrive à un jour pour atteindre la date d’exécution(14-03-2016) qu'on ait des alertes.
S'il vous plait j'attends votre soutient!
Est-ce possible d'avoir les codes sources PHP pour comparer deux dates dont la première est la date de prise de décision (10-03-2016) et la seconde est la date d’exécution de décision(15-03-2016), au cas où on arrive à un jour pour atteindre la date d’exécution(14-03-2016) qu'on ait des alertes.
S'il vous plait j'attends votre soutient!
A voir également:
- Comparer deux date php
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Deux whatsapp sur un téléphone - Guide
- Whatsapp date incorrecte ✓ - Forum Mobile
1 réponse
Salut,
Petit copier coller d'openclassrooms, cours sur les dates en php que tu peux retrouver ici :
https://openclassrooms.com/courses/gerer-les-dates-en-php
La partie qui te sera utile :
Comparaison de deux dates
Plus récent, plus ancien
Voici un autre avantage de passer des timestamp à DateTime, la manière de comparer les dates ! Imaginez vous que vous ne connaissiez que la version "chaîne de caractères" de la date, par exemple "14/02/2012". Si vous voulez la comparer, sans utiliser les DateTime vous seriez obligé de passer par la fonction strtotime deux fois, de comparer les timestamp puis enfin d'afficher le résultat. Vous avouerez que c'est lourd. Surtout que maintenant vous savez que les timestamps ne sont valides que sur la période allant du 01/01/1970 au 19/01/2038 ;)
Alors qu'avec DateTime on compare deux dates de la même manière qu'un entier, à une toute petite exception près. Imaginons que nous voulions vérifier que le "14/02/2012" est bien antérieur au "12/03/2013".
<?php
// avec strtotime :-(
$date1= strtotime("14/02/2012");
$date2= strtotime("12/03/2013");
if( $date1 < $date2 ){
echo date('d/m/Y',$date1);
}
// avec DateTime :-)
$date1 = new DateTime("14/02/2012");
$date2 = new DateTime("12/03/2013");
if( $date1 < $date2 ){
echo $date2->format('d/m/Y');
}
Les deux codes qui ont été donnés sont équivalents sauf que cette fois-ci vous comparez directement les dates, c'est plus intuitif et donc plus lisible.
Ne comparez JAMAIS les chaînes de caractères ! Dans notre cas (je ne l'ai pas choisi au hasard) il en résulterait que le 14/02/2012 se passe APRES le 12/03/2013. En effet 14 vient bien après 12...
Le cas particulier : vérifier que deux dates sont égales
Quoi ? c'est un cas particulier ? je pourrais pas écrire $date1 == $date2 ?
En fait, si, mais attention. Vous ne pourrez l'écrire que si vous êtes sûr(e) que vous êtes en présence de deux DateTime. Si ce n'est pas le cas il faut recourir à une astuce.
En effet PHP est un langage faiblement typé. Ça veut dire qu'on ne connait pas le type d'une variable auquel on a à faire tant que la variable n'a pas été testée. Cela signifie aussi que PHP, pour vérifier si deux contenus sont égaux, va vouloir tout convertir dans un type plus "général".Du coup, j'ai fait le test pour vous, <?php var_dump(new DateTime()==new ArrayObject);//renvoie true!!!
Heureusement, comme je vous l'ai dit, il y a une astuce, qui porte le nom de "triple égal".
Re-testons le code précédent en remplaçant "==" par "===" <?php var_dump(new DateTime()===new ArrayObject);//renvoie false!!!.
Ouf... En fait le "===" vérifie avant tout qu'on a le même type de données de chaque côté.Donc voila ce qu'il faut retenir : pour vérifier que deux dates sont égales, on utilise "===" au lieu de "==".
Une autre solution si le triple égal vous fait peur serait d'utiliser une vérification du type avec instanceof ou avec le typehint.
Petit copier coller d'openclassrooms, cours sur les dates en php que tu peux retrouver ici :
https://openclassrooms.com/courses/gerer-les-dates-en-php
La partie qui te sera utile :
Comparaison de deux dates
Plus récent, plus ancien
Voici un autre avantage de passer des timestamp à DateTime, la manière de comparer les dates ! Imaginez vous que vous ne connaissiez que la version "chaîne de caractères" de la date, par exemple "14/02/2012". Si vous voulez la comparer, sans utiliser les DateTime vous seriez obligé de passer par la fonction strtotime deux fois, de comparer les timestamp puis enfin d'afficher le résultat. Vous avouerez que c'est lourd. Surtout que maintenant vous savez que les timestamps ne sont valides que sur la période allant du 01/01/1970 au 19/01/2038 ;)
Alors qu'avec DateTime on compare deux dates de la même manière qu'un entier, à une toute petite exception près. Imaginons que nous voulions vérifier que le "14/02/2012" est bien antérieur au "12/03/2013".
<?php
// avec strtotime :-(
$date1= strtotime("14/02/2012");
$date2= strtotime("12/03/2013");
if( $date1 < $date2 ){
echo date('d/m/Y',$date1);
}
// avec DateTime :-)
$date1 = new DateTime("14/02/2012");
$date2 = new DateTime("12/03/2013");
if( $date1 < $date2 ){
echo $date2->format('d/m/Y');
}
Les deux codes qui ont été donnés sont équivalents sauf que cette fois-ci vous comparez directement les dates, c'est plus intuitif et donc plus lisible.
Ne comparez JAMAIS les chaînes de caractères ! Dans notre cas (je ne l'ai pas choisi au hasard) il en résulterait que le 14/02/2012 se passe APRES le 12/03/2013. En effet 14 vient bien après 12...
Le cas particulier : vérifier que deux dates sont égales
Quoi ? c'est un cas particulier ? je pourrais pas écrire $date1 == $date2 ?
En fait, si, mais attention. Vous ne pourrez l'écrire que si vous êtes sûr(e) que vous êtes en présence de deux DateTime. Si ce n'est pas le cas il faut recourir à une astuce.
En effet PHP est un langage faiblement typé. Ça veut dire qu'on ne connait pas le type d'une variable auquel on a à faire tant que la variable n'a pas été testée. Cela signifie aussi que PHP, pour vérifier si deux contenus sont égaux, va vouloir tout convertir dans un type plus "général".Du coup, j'ai fait le test pour vous, <?php var_dump(new DateTime()==new ArrayObject);//renvoie true!!!
Heureusement, comme je vous l'ai dit, il y a une astuce, qui porte le nom de "triple égal".
Re-testons le code précédent en remplaçant "==" par "===" <?php var_dump(new DateTime()===new ArrayObject);//renvoie false!!!.
Ouf... En fait le "===" vérifie avant tout qu'on a le même type de données de chaque côté.Donc voila ce qu'il faut retenir : pour vérifier que deux dates sont égales, on utilise "===" au lieu de "==".
Une autre solution si le triple égal vous fait peur serait d'utiliser une vérification du type avec instanceof ou avec le typehint.