我有以下代码:
$date1 = (string)$_POST['convocatory_open_start_date']; // "30/04/2015"
$date2 = (string)$_POST['convocatory_open_end_date']; // "31/05/2015"
$startDate = date('Y-m-d', strtotime($date1));
$endDate = date('Y-m-d', strtotime($date2));
但我总是得到$startDate和$endDate 1970-01-01为什么???
请帮帮我,我有3个小时的时间来解决同样的问题。
感谢
问题是,如果使用/作为分隔符,strtotime
将假定格式为m/d/Y。因此它将无法转换它,并且它默认为1970-01-01。
最简单的解决方案是
$startDate = DateTime::createFromFormat('d/m/Y', $date1)->format('Y-m-d');
$endDate = DateTime::createFromFormat('d/m/Y', $date2)->format('Y-m-d');
首先检查发布的变量是否:-$date1和$date12不是NULL因为NULL
被php函数strtotime()
解释为0,因为您应该传递一个整数时间戳。时间戳0表示1-1-1970。
您需要检查已发布变量的已发布内容
if(($date1 === NULL) || ($date1 === NULL) ) {
//don't use `strtotime()`
}
如果不是这样,并且发布了您的变量,我唯一能想到的就是,在使用日期函数和输入格式时,字符串TimeFormatting有问题。
$date1 = (string)$_POST['convocatory_open_start_date']; // "30/04/2015"
$date2 = (string)$_POST['convocatory_open_end_date']; // "31/05/2015"
$startDate = date($date1);
$endDate = date($date2);
echo $startDate, '<br/> ' , $endDate;
希望这能为你的探索增加一些!