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!
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