Php 对非对象DateTime调用成员函数format()

Php 对非对象DateTime调用成员函数format(),php,Php,这个问题可能很常见,但似乎我无法找出我做错了什么 我有两个变量,来自数据库的日期和时间,我认为是UTC格式,我需要转换为AEST $date = message['date']; //25/09/2014 $time = message['time']; //9:00:00 $combined_time = $date . " " . $time; $schedule_date = DateTime::createFromFormat("Y-m-d H:i:s",$combined_time

这个问题可能很常见,但似乎我无法找出我做错了什么

我有两个变量,来自数据库的日期和时间,我认为是UTC格式,我需要转换为AEST

$date = message['date']; //25/09/2014
$time = message['time']; //9:00:00

$combined_time = $date . " " . $time;
$schedule_date = DateTime::createFromFormat("Y-m-d H:i:s",$combined_time ,new DateTimeZone("Australia/Melbourne"));
return $schedule_date->format("jS-A-Y H:i:s T");

我在一个非对象异常上调用了一个成员函数format()。

您没有创建类的任何对象,因此出现错误,您需要创建类对象或直接使用

$schedule_date = new DateTime($date);
return $schedule_date->format("jS-A-Y H:i:s T");
或者您需要在Datetime()中传递
正确的格式
请参见@此问题的Alpha答案


要了解更多信息,请阅读手册:-

您没有创建任何类的对象,因此如果出现错误,您需要创建类对象或直接使用

$schedule_date = new DateTime($date);
return $schedule_date->format("jS-A-Y H:i:s T");
或者您需要在Datetime()中传递
正确的格式
请参见@此问题的Alpha答案

有关更多信息,请阅读手册:-

您应该使用(
“d/m/Y h:i:s”
):

给定的格式错误,因为您的日期时间为
25/09/2014 9:00:00
。检查。

您应该使用(
“d/m/Y h:i:s”
):

给定的格式错误,因为您的日期时间为
25/09/2014 9:00:00
。检查

然后您可以使用$date->format('Y')来获取年份


然后,您可以使用$date->format('Y')来获取年份…

谢谢,我现在才得到它。我想我只是在
DateTime::createFromFormat(“Y-m-dh:I:s”)
中使用了错误的格式
DateTime::createFromFormat
有效,无需使用
newdatetime
DateTime::createFromFormat
返回一个
DateTime
对象。是的,你的方法也是正确的,但你说
你没有创建任何类对象
,这不是因为
OP
没有使用
new
而是因为他
DateTime::createFromFormat
中的
格式错误,谢谢,我现在才拿到。我想我只是在
DateTime::createFromFormat(“Y-m-dh:I:s”)
中使用了错误的格式
DateTime::createFromFormat
有效,无需使用
newdatetime
DateTime::createFromFormat
返回一个
DateTime
对象。是的,你的方法也是正确的,但你说
你没有创建任何类对象
,这不是因为
OP
没有使用
new
而是因为他
DateTime::createFromFormat
:-)中的
格式错误,谢谢@Star,删除它:-)谢谢@Star,删除它:-)
    // convert string to timestamp
    $timeStamp = strtotime($combined_time);
    // create DateTime object use timestamp
    $date = new DateTime();
    $date->setTimestamp($timeStamp);