PHP DateTime类产生意外结果
我已经习惯了DateTime类,并且从下面的代码中得到了意想不到的结果:PHP DateTime类产生意外结果,php,datetime,var-dump,Php,Datetime,Var Dump,我已经习惯了DateTime类,并且从下面的代码中得到了意想不到的结果: <?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")
<?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\u dump($outputDate)
:
我不知道为什么使用
var\u dump($outputDate)
行可以输出日期。我用不同的方法解决了这个问题,但我很好奇为什么会这样。有什么建议吗?date
属性未在中定义,因此此行为未定义,您不能依赖此类代码。要将日期时间表示为字符串,应使用如下方法:
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");
您可以在上阅读更多关于可能的
格式参数的信息。我已经写了一个答案,解释了为什么会发生这种情况。无法过帐,因为Q已关闭。无论如何:@underflow-希望这对你有帮助。你们能接受封闭式重复问题的答案吗?哦,正如我所看到的——你们能:)是的,我能,我不能马上回答,因为我必须等一段时间。现在,我们来了解一下为什么DateTime会比原始日期缩短数小时—您不应该依赖$converted
值。尝试构造您的DateTime
对象,然后使用modify()
方法,该方法可以将日期增加+1年
<?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 -
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");