validation de date avec 2 formats possibles
Bonsoir,
mes dates ont 2 formats possibles :
dd/mm/yyyy (que des chiffres)
ou
mm(textuel) qq, yyyy (donc le mois en textuel et le reste en chiffres)
Exemples : 26/11/2021
ou
Nov 26,2021
Pour valider une date reçue, j'ai imaginé la fonction suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public function validateDate($date,$the_format='d/m/Y',$the_format2='F d,Y'):bool
{
$format = 0;
$d=DateTime::createFromFormat($the_format,$date);//on crée le DateTime avec le 1er format
$format = 1; // on mémorise le 1er format
if ($d== false){
$d=DateTime::createFromFormat($the_format2,$date); //on crée le DateTime avec le 2e format
$format = 2;// on mémorise le 2e format
if ($d== false) return false; // si la date en entrée ne correspond à aucun des 2 formats, on retourne false
}
$format = ($format == 1)?$the_format:$the_format2; //on récupère le format de la date en entrée
$format2 = $d->format($format); //on recrée la date en convertissant le DateTime au format initial
return $d!==false && $format2===$date; //la date est valide si le DateTime ne vaut pas false et qu'on a pu
// recréer la date initiale
} |
Ca ne marche pas car pour Jan 01,2021, ça me retourne falsealors que cette date est conforme au 2e format. Quelle est votre proposition ?