CHECKDATE |
Vérifie la date |
---|---|
PHP 4+ |
Syntaxe
function checkdate($month, $day, $year); |
Paramètres
Nom | Description | |
---|---|---|
$year | Ce paramètre permet d'indiquer l'année entre 1 et 32767. | |
$month | Ce paramètre permet d'indiquer le mois : | |
Valeur | Description | |
1 | Cette valeur permet d'indiquer le mois de Janvier | |
2 | Cette valeur permet d'indiquer le mois de Février | |
3 | Cette valeur permet d'indiquer le mois de Mars | |
4 | Cette valeur permet d'indiquer le mois d'Avril | |
5 | Cette valeur permet d'indiquer le mois de Mai | |
6 | Cette valeur permet d'indiquer le mois de Juin | |
7 | Cette valeur permet d'indiquer le mois de Juillet | |
8 | Cette valeur permet d'indiquer le mois d'Août | |
9 | Cette valeur permet d'indiquer le mois de Septembre | |
10 | Cette valeur permet d'indiquer le mois d'Octobre | |
11 | Cette valeur permet d'indiquer le mois de Novembre | |
12 | Cette valeur permet d'indiquer le mois de Décembre | |
$day | Ce paramètre permet d'indiquer le jour (valeur entre 1 et 31) |
Retour
Valeur | Description |
---|---|
FALSE | Cette valeur permet d'indiquer que la date n'est pas valide. |
TRUE | Cette valeur permet d'indiquer que la date est valide. |
Description
Cette fonction permet de vérifier si l'année, le mois et le jour spécifié sont une date grégorienne valide.
Remarques
- Objectif principal : La fonction checkdate() est utilisée pour valider une date. Elle vérifie si la combinaison d'un mois, d'un jour et d'une année forme une date valide dans le calendrier grégorien. Cela permet de s'assurer que la date donnée existe réellement (par exemple, vérifier si le 31 février est une date valide).
- Paramètres de la fonction : checkdate() prend trois paramètres : le mois, le jour et l'année. Le mois doit être un entier entre 1 et 12, le jour doit être un entier valide pour le mois donné, et l'année peut être n'importe quel entier valide pour une année.
- Valeur de retour : La fonction retourne TRUE si la date est valide, et FALSE si la date est invalide. Cela permet de tester facilement si une date donnée est correcte sans avoir à manipuler directement des objets ou des librairies complexes pour effectuer la validation.
- Vérification des années bissextiles : checkdate() prend également en compte les années bissextiles lorsqu'elle vérifie la validité des dates. Par exemple, elle saura que le 29 février est valide uniquement pour les années bissextiles, comme 2020, mais invalide pour les années non bissextiles, comme 2021.
- Utilisation dans les formulaires : Cette fonction est couramment utilisée dans les applications Web pour valider les dates soumises par l'utilisateur dans les formulaires. Par exemple, avant de sauvegarder une date de naissance, il est important de vérifier que la date fournie est bien valide.
- Manipulation des dates hors du calendrier grégorien : checkdate() fonctionne exclusivement avec le calendrier grégorien, étant le calendrier civil standard utilisé dans la plupart des pays. Elle ne peut pas valider des dates dans d'autres calendriers, comme le calendrier julien ou le calendrier hébraïque.
- Validité du jour et du mois : Par exemple, si vous essayez de passer des valeurs incorrectes, comme checkdate(2, 30, 2021) (pour vérifier le 30 février 2021), la fonction renverra FALSE parce que février n'a que 28 ou 29 jours, selon que l'année est bissextile ou non.
- Amélioration de la robustesse du code : L'utilisation de checkdate() permet de rendre le code plus robuste et fiable. Au lieu de supposer que l'utilisateur entre une date valide, cette fonction permet de valider les entrées avant d'effectuer des traitements supplémentaires, évitant ainsi des erreurs ou des comportements imprévisibles liés à des dates incorrectes.
Exemples
Voici quelques exemples typiques de l'utilisation de cette fonction :
- <?php
- echo "1,9,2010=" . (checkdate(1,9,2010)?"true":"false") . "<br />";
- echo "01,09,2010=" . (checkdate(01,09,2010)?"true":"false") . "<br />";
- echo "12,03,2011=" . (checkdate(12,03,2011)?"true":"false") . "<br />";
- echo "12,12,03=" . (checkdate(12,12,03)?"true":"false") . "<br />";
- echo "14,12,03=" . (checkdate(14,12,03)?"true":"false") . "<br />";
- ?>
on obtiendra le résultat suivant :
1,09,2010=true01,09,2010=false
12,03,2011=true
12,12,03=true
14,12,03=false
Voici un exemple permettant de tester la validité d'une date en format ISO sans l'utilisation de cette fonction :
- <?php
- function IsLeapYear($Year) {
- return ((($Year & 3) == 0) && (($Year % 100 != 0) || ($Year % 400 == 0)));
- }
-
- function IsDateValidISO($date) {
- $DayInMonth=array(31,28,31,30,31,30,31,31,30,31,30,31);
- $Year = substr($date,0,4);
- switch(substr($date,4,1)) {
- case "/":case "-":case "\\":case ".":
- break;
- default:
- return FALSE;
- }
- $Month = substr($date,5,2);
- switch(substr($date,7,1)) {
- case "/":case "-":case "\\":case ".":
- break;
- default:
- return FALSE;
- }
- $Day = substr($date,8,2);
- if(!is_numeric($Year)) return FALSE;
- if(!is_numeric($Month)) return FALSE;
- if(!is_numeric($Day)) return FALSE;
-
- if((intval($Month) < 1) || (intval($Month) > 12)) return FALSE;
- $NumberOfDay = $DayInMonth[$Month-1];
- if(($Month==2)&&(IsLeapYear($Year))) $NumberOfDay++;
- if((intval($Day) < 1) || (intval($Day) > $NumberOfDay)) return FALSE;
- return TRUE;
- }
-
- echo "1900-02-29=".(IsDateValidISO("1900-02-29")?"true":"false").",".(checkdate(2,29,1900)?"true":"false")."<br />";
- echo "2000-02-29=".(IsDateValidISO("2000-02-29")?"true":"false").",".(checkdate(2,29,2000)?"true":"false")."<br />";
- echo "2000-02-30=".(IsDateValidISO("2000-02-30")?"true":"false").",".(checkdate(2,30,2000)?"true":"false")."<br />";
- echo "2001-02-29=".(IsDateValidISO("2001-02-29")?"true":"false").",".(checkdate(2,29,2001)?"true":"false")."<br />";
- echo "2011-01-01=".(IsDateValidISO("2011-01-01")?"true":"false").",".(checkdate(1,1,2011)?"true":"false")."<br />";
- echo "2011-00-01=".(IsDateValidISO("2011-00-01")?"true":"false").",".(checkdate(0,1,2011)?"true":"false")."<br />";
- echo "2011-01-00=".(IsDateValidISO("2011-01-00")?"true":"false").",".(checkdate(1,0,2011)?"true":"false")."<br />";
- echo "2011-13-13=".(IsDateValidISO("2011-13-13")?"true":"false").",".(checkdate(13,13,2011)?"true":"false")."<br />";
- echo "2011-12-14=".(IsDateValidISO("2011-12-14")?"true":"false").",".(checkdate(12,14,2011)?"true":"false")."<br />";
- ?>
on obtiendra le résultat suivant :
1900-02-29=false,false2000-02-29=true,true
2000-02-30=false,false
2001-02-29=false,false
2011-01-01=true,true
2011-00-01=false,false
2011-01-00=false,false
2011-13-13=false,false
2011-12-14=true,true
Dernière mise à jour : Mercredi, le 25 mars 2015