【发布时间】:2014-06-18 00:32:53
【问题描述】:
我正在使用 jQuery datepicker 在我的输入日期中选择一个日期。
我在 datepicker 脚本中使用的格式是:dateFormat: 'DD, d MM, yy',
所以我在输入中得到了这个日期:“Quinta-feira, 1 Maio, 2014”(葡萄牙语日期)。
但现在我需要将此日期转换为在mysql中保存日期时间。
如果日期是英文,我只需要使用下面的代码:
$date = DateTime::createFromFormat('l, j F, Y', $_POST['date']);
echo $date->format('Y-m-d');
但我的日期不是英文,所以我需要进行转换,我尝试使用下面的函数“convertDate”来做到这一点。
但是当我调用该函数时,我会像这样传递输入日期值:convertDate($_POST['date']);
我收到了一个错误“在非对象上调用成员函数 format():$day= $date->format("l");
你发现这里有什么问题吗?因为这个功能对我来说似乎很好!
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;
}
尝试使用 str_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');
我在echo $date->format('Y-m-d') 中遇到了同样的错误
【问题讨论】:
-
请
var_dump($myDate)告诉我们结果。 -
我得到这个:"string(25) "Sexta-feira, 2 Maio, 2014"",这是我在日期选择器中选择的日期!
-
您又回到了上一个问题中遇到的相同问题。该日期格式不适用于
DateTime()(并且您在 createFromFormat 中的格式不正确)。我建议使用正则表达式将此日期字符串分解为您需要的部分。从那里你的代码的其余部分应该可以工作。
标签: php jquery mysql sql datetime