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

时间:2014-10-07 05:02:32

标签: 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 ,new DateTimeZone("Australia/Melbourne"));
return $schedule_date->format("jS-A-Y H:i:s T");

我得到Call to a member function format() on a non-object例外。

3 个答案:

答案 0 :(得分:3)

你应该使用("d/m/Y h:i:s"):

$schedule_date = DateTime::createFromFormat("d/m/Y h:i:s", $combined_time , new DateTimeZone("Australia/Melbourne"));

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

答案 1 :(得分:2)

您没有创建任何类的对象,因此您需要创建类对象或直接使用它。

$schedule_date = new DateTime($date);
return $schedule_date->format("jS-A-Y H:i:s T");

或者您需要通过correct format in Datetime()查看 @The Alpha 的答案

更多阅读手册: - http://php.net/manual/en/datetime.createfromformat.php

答案 2 :(得分:0)

    // convert string to timestamp
    $timeStamp = strtotime($combined_time);
    // create DateTime object use timestamp
    $date = new DateTime();
    $date->setTimestamp($timeStamp);

然后你可以使用$ date->格式('Y')来获得年份......