Php 对非对象DateTime调用成员函数format()
这个问题可能很常见,但似乎我无法找出我做错了什么 我有两个变量,来自数据库的日期和时间,我认为是UTC格式,我需要转换为AESTPhp 对非对象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
$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);