PHP 日期时间 Class 产生意外结果
PHP DateTime Class Producing Unexpected Results
我已经习惯了 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)
行允许我输出日期。我已经使用不同的方法解决了这个问题,但我很好奇为什么会这样。有什么建议吗?
date
属性 未在 Datetime class docs 中定义,因此此行为是 未定义,您不能依赖此类代码。为了让您的日期时间表示为字符串,您应该使用 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
参数的信息。
我已经习惯了 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)
行允许我输出日期。我已经使用不同的方法解决了这个问题,但我很好奇为什么会这样。有什么建议吗?
date
属性 未在 Datetime class docs 中定义,因此此行为是 未定义,您不能依赖此类代码。为了让您的日期时间表示为字符串,您应该使用 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
参数的信息。