Je sélectionne une date dans ma date d'entrée avec jQuery datepicker.Erreur lors de la conversion de la date en datetime
Le format Im en utilisant dans datepicker script est: dateFormat: 'DD, d MM, yy',
donc je reçois cette date dans mon entrée: "Quinta-feira, 1 Maio, 2014" (date portugais).
Mais maintenant j'ai besoin de convertir cette date pour enregistrer comme date/heure dans mysql.
Je avais besoin que d'utiliser ce code ci-dessous si la date était en anglais:
$date = DateTime::createFromFormat('l, j F, Y', $_POST['date']);
echo $date->format('Y-m-d');
Mais ma date isnt anglais, donc je dois faire la conversion et Im essayant d'utiliser la fonction ci-dessous « convertDate » à fais ceci.
Mais quand je l'appelle la fonction, et je passe la valeur de la date d'entrée comme celui-ci: convertDate($_POST['date']);
J'ai eu une erreur "appel à un format de fonction membre() sur un non-objet dans ce ligne: $day= $date->format("l");
vous voyez quelque chose de mal ici parce que le fucntion semble bon pour moi
function convertDate($myDate){
$date = DateTime::createFromFormat('Ymd', $myDate);
$day = $date->format("l");
$daynum = $date->format("j");
$month = $date->format("F");
$year = $date->format("Y");
switch($day)
{
case "Segunda-Feira": $day = "Monday"; break;
case "Terça-Feira": $day = "Tuesday"; break;
case "Quarta-Feira": $day = "Wednesday"; break;
case "Quinta-Feira": $day = "Thursday"; break;
case "Sexta-Feira": $day = "Friday"; break;
case "Sábado": $day = "Saturday"; break;
case "Domingo": $day = "Sunday"; break;
default: $day = "Unknown"; break;
}
switch($month)
{
case "Janeiro": $month = "January"; break;
case "Fevereiro": $month = "February"; break;
case "Março": $month = "March"; break;
case "Abril": $month = "April"; break;
case "Maio": $month = "May"; break;
case "Junho": $month = "June"; break;
case "Julho": $month = "July"; break;
case "Agosto": $month = "August"; break;
case "Setembro": $month = "September"; break;
case "Outubro": $month = "October"; break;
case "Novembro": $month = "November"; break;
case "Dezembro": $month = "December"; break;
default: $month = "Unknown"; break;
}
echo $daynum . ", " . $month . ", " . $year;
}
Essayer de s! tr_ireplace:
$english = array("Segunda-Feira","Terça-Feira","Quarta-Feira","Quinta-Feira","Sexta-Feira","Sábado","Domingo");
$portuguese = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
$result= str_ireplace ($english , $portuguese, $_POST['date']);
$date = DateTime::createFromFormat('l, j F, Y', $result);
echo $date->format('Y-m-d');
Je suis même erreur dans echo $date->format('Y-m-d')
Faire un 'var_dump ($ myDate)' et nous montrer les résultats S'il vous plaît. –
Je reçois ceci: "string (25)" Sexta-feira, 2 Maio, 2014 "", c'est la date que j'ai choisi dans mon agenda! – OzzC
Vous êtes de retour au même problème que vous aviez dans votre dernière question. Ce format de date ne fonctionnera pas pour 'DateTime()' (et votre format dans createFromFormat est incorrect). Je recommande d'utiliser une expression régulière pour séparer cette chaîne de date dans les parties dont vous avez besoin. De là, le reste de votre code devrait fonctionner. –