我已经习惯了DateTime Class,并且从下面的代码中得到了意想不到的结果:
<?php
$now = date("Y-m-d H:i:s");
echo $now .'</br>';
$newDate = date("Y-m-d H:i:s",strtotime("$now + 1 years"));
$converted = strtotime("$newDate");
$outputDate = new DateTime("@$converted");
var_dump($outputDate);
echo "Output - ". $outputDate->date;
?>
当我有var_dump($outputDate)
时,我得到了预期的输出(即输出字符串在最后):
2015-03-29 23:08:30
object(DateTime)#1 (3) { ["date"]=> string(26) "2016-03-29 21:08:30.000000"
["timezone_type"]=> int(1)
["timezone"]=> string(6) "+00:00" } Output - 2016-03-29 21:08:30.000000
但是,如果我使用完全相同的代码并注释掉var_dump($outputDate)
:
<?php
$now = date("Y-m-d H:i:s");
echo $now .'</br>';
$newDate = date("Y-m-d H:i:s",strtotime("$now + 1 years"));
$converted = strtotime("$newDate");
$outputDate = new DateTime("@$converted");
// var_dump($outputDate);
echo "Output - ". $outputDate->date;
?>
我得到:
2015-03-29 23:14:13
Output -
我不确定为什么让var_dump($outputDate)
行允许我输出日期。我已经使用不同的方法解决了这个问题,但我很好奇为什么会这样。有什么建议吗?
答案 0 :(得分:2)
date
属性,因此此行为未定义,您无法依赖此类代码。要将日期时间表示为字符串,您应该使用format()
方法,如下所示:
echo "Output - ". $outputDate->format("Y-m-d H:i:s");
//or with procedural style
echo "Output - ". date_format($outputDate,"Y-m-d H:i:s");
您可以在PHP docs上详细了解可能的format
参数。