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 :
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 ?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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 }
Partager