PHP Fatal error: Call to a member function format() on a non-object any idea
Solution 1
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.
Solution 2
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.
Helper
Updated on June 05, 2022Comments
-
Helper almost 2 years
I'm trying to convert the received date through
$_POST
but I gotPHP 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?
-
Helper over 9 yearsThank you. This answer worked like a charm. Now I got the idea. Regards
-
vascowhite over 9 yearsAs DateTime::createFromFormat() returns false on error you can simply do
if(!$date){}
. -
vascowhite over 9 yearsThis answer seems to be working around the problem rather than solving it.
-
Sithu over 9 years@vascowhite is working around the problem not solving it alternatively, isn't it? SO answers need to meet such kind of strict rules? Well, either
strtotime
orDateTime::createFromFormat
, the correct format must be given. That's why I stated$_POST['order_date'] should have the valid format to strtotime
. -
Sithu over 9 years@vascowhite, I think it is just enough to leave comment here. No need downvote.