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

I'm trying to convert the received date through $_POST but I got

PHP Fatal error: Call to a member function format() on a non-object

Here is my code:

$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

What is the problem with my code?

Can anybody help please?

My answer does not directly answer your question, but you can alternatively try this.

You can simply implement this using date and date_default_timezone_set

date_default_timezone_set('America/New_York');

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

However, $_POST['order_date'] should have the valid format to strtotime.

Your $_POST['order_date'] input doesn't seem to be formatted correctly. As the documentation says, DateTime::createFromFormat returns false if the $time parameter doesn't match the given $format string, so a boolean type (non-object).

You should verify your $_POST input and catch those errors via checking

if(!($date instanceof DateTime))
{
    // you, sir, entered an invalid date!
}

to prevent those errors.