web-dev-qa-db-fra.com

méthode date (), "Une valeur numérique non bien formée rencontrée" ne veut pas formater une date passée dans $ _POST

Je ne peux malheureusement pas utiliser DateTime() car le serveur sur lequel ce projet est exécuté tourne PHP v.5.2.

la ligne en question:

$aptnDate2 = date('Y-m-d', $_POST['nextAppointmentDate']); 

renvoie l'erreur suivante:

Notice: A non well formed numeric value encountered

donc je var dump pour m'assurer qu'il est bien formaté ..

var_dump($_POST['nextAppointmentDate']);  

string(10) "12-16-2013"

Le état des documents php qu'il faut un horodatage et non une chaîne. mais quand je fais:

date('Y-m-d', strtotime($_POST['nextAppointmentDate']));

et alors var_dump le résultat, j'obtiens ceci:

string(10) "1969-12-31"

pourquoi ne puis-je pas formater une date avec cette valeur de date et strtotime ()?

merci!

21
Prefix

Dans la documentation de strtotime() :

Les dates aux formats m/d/y ou d-m-y sont ambiguës en examinant le séparateur entre les différents composants: si le séparateur est une barre oblique (/), alors le m/d/y américain est supposé; alors que si le séparateur est un tiret (-) ou un point (.), alors le format européen d-m-y est supposé.

Dans votre chaîne de date, vous avez 12-16-2013. 16 N'est pas un mois valide, et donc strtotime() renvoie false.

Comme vous ne pouvez pas utiliser la classe DateTime, vous pouvez remplacer manuellement le - Par / En utilisant str_replace() pour convertir la chaîne de date dans un format que strtotime() comprend:

$date = '2-16-2013';
echo date('Y-m-d', strtotime(str_replace('-','/', $date))); // => 2013-02-16
53
Amal Murali