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.