Erreur construct avec DateTime

Petit nouveau ! | 3 Messages

15 janv. 2019, 01:48

Salut !

J'ai une erreur et je seche:

Exception reçue : DateTime::__construct(): Failed to parse time string (26 févr. 2019) at position 0 (2): Unexpected character

Voici le code incriminé :
$datetime = new DateTime('26 févr. 2019');
 $intl_date_formatter = new IntlDateFormatter('fr_FR',
     IntlDateFormatter::SHORT,
     IntlDateFormatter::NONE);
    $intl_date_formatter->setPattern('dd MMM yyyy');
$datetime = $intl_date_formatter->format($datetime);
    echo $datetime;
Donc j'ai sortie une exception sur la création du datetime pour l'erreur que vous voyez.

Elle provient des accents sur févr. Et déce. Qui ne passe pas dans la construction.

Je suis en utf8, et si je passe dans le DateTime une valeur genre: 26-02-2019 j'aurais bien un retour sans erreur de 26 févr. 2019.

( à l'origine j'ai une variable qui contient dd MMM yyyy exemple: 12 avri. 2033), mais pour plus de clarté j'ai reproduit l'erreur au plus simple.)

Merci à vous pour le coup de main !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 janv. 2019, 01:55

Voici les formats de dates autorisés en paramètre de DateTime() :
http://php.net/manual/fr/datetime.formats.date.php

Je doute très fortement que tu puisses utiliser directement les notations en français, donc il faut que tu transformes ta notation de date pour arriver dans l'un des formats de la liste ci-dessus.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

15 janv. 2019, 11:34

Tu as raison, finalement il y en a aussi quelques autres qui ne fonctionnent pas, je me suis laissé berné par janv. Mars et deux autre au hasard qui passais. Ce que je n'explique pas d'ailleurs.

Merci à toi !

Petit nouveau ! | 3 Messages

15 janv. 2019, 11:37

Je vais faire un preg_match avec extraction des lettres, un tableau avec les 12 mois avec un test, puis un échange.

Ça me paraît le mieux.