无法转换类DateTime的对象

时间:2017-07-06 11:01:02

标签: php datetime

我可以看到这些问题有很多问题,但我很困惑,为什么以下不起作用,直接来自PHP docs

$tempDate = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $tempDate;

错误:

  

PHP Catchable致命错误:类DateTime的对象无法转换为字符串。

事实上,文档中的每个示例都会给我这个错误。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您不能直接echo DateTime个对象。您必须使用format方法获取日期和/或时间部分:

$tempDate = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $tempDate->format('Y-m-d H:i:s');
// NOT echo $tempDate!!!
  

演示: http://ideone.com/IyqRWj

如果要查看对象的详细信息(用于调试),可以使用var_dump

$tempDate = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
var_dump($tempDate);

答案 1 :(得分:1)

错误消息:

  

PHP Catchable致命错误:类DateTime的对象无法转换为字符串。

是不言自明的。声明:

echo $tempDate;

尝试打印DateTime对象。 echo()语言构造需要一个字符串,你传递一个DateTime对象。 DateTime类未实现__toString() magic method,PHP不知道如何将DateTime对象转换为字符串。

有很多方法可以将DateTime对象表示为字符串,所有这些方法都由DateTime::format()方法处理。

  

事实上,文档中的每个示例都会给我这个错误。

事实上,DateTime::createFromFormat()文档中的every example内容为:

echo $date->format('Y-m-d');

echo $date;

是另一回事
  

有什么想法吗?

仔细阅读DateTimeDateTime::format()的文档。