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 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
    }
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 ?