PHP致命错误:在非对象上调用成员函数format()任何想法

时间:2014-11-30 11:59:16

标签: php date datetime post

我试图通过$_POST转换收到的日期,但我得到了

  

PHP致命错误:在非对象上调用成员函数format()

这是我的代码:

$time = $_POST['order_date'];
$date = DateTime::createFromFormat( 'Y-m-d H:i:s', $time, new DateTimeZone( 'America/New_York'));
$get_data = $date->format( 'Y-m-d H'); //here is the problem

我的代码有什么问题?

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

您的$_POST['order_date']输入似乎没有正确格式化。正如documentation所说,如果DateTime::createFromFormat参数与给定的false字符串不匹配,$time会返回$format,因此布尔类型(非对象)。

您应该验证$_POST输入并通过检查

来捕获这些错误
if(!($date instanceof DateTime))
{
    // you, sir, entered an invalid date!
}

以防止这些错误。

答案 1 :(得分:3)

我的回答并未直接回答您的问题,但您可以尝试这样做。

您只需使用datedate_default_timezone_set

即可实现此目的
date_default_timezone_set('America/New_York');

$time = $_POST['order_date'];
$date = date('Y-m-d H', strtotime($time));

但是,$_POST['order_date']应该the valid formatstrtotime