在php上转换为日期;It’不起作用


Convert to Date on php it's not working

我有以下代码:

$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;

希望这能为你的探索增加一些!