访问对象时的奇怪行为

时间:2016-06-26 16:53:02

标签: php

这是我的代码:

$date1 = new DateTime();
$date1->format('Y-m-d H:i:s');
echo $date1->date. ' while echoing date1';  

它仅在“回显date1”时回显,换句话说,$date1->date为空 如果我首先像这样添加转储date1:​​

$date1 = new DateTime();
$date1->format('Y-m-d H:i:s');
var_dump($date1);
echo $date1->date. ' while echoing date1';  

我得到了

object(DateTime)[359]
  public 'date' => string '2016-06-26 16:54:56.000000' (length=26)
  public 'timezone_type' => int 3
  public 'timezone' => string 'UTC' (length=3)

2016-06-26 16:54:56.000000 while echoing date1

这就是我想要的。这件事让我很生气,因为它完全出乎意料。

1 个答案:

答案 0 :(得分:2)

格式选项不是用于设置对象的格式,它是一种以请求的格式将日期对象作为字符串返回的方法:

echo $date->format('Y-m-d H:i:s');

澄清一下,您所看到的日期'为方便起见,对象内部只是一个文本表示,因为内部它将以优化的方式保存。如果要将其添加到字符串,则需要指定所需的格式:

echo "This is the date ".$date->format('c');