【问题标题】:PHP DateTime conversion errorPHP DateTime 转换错误
【发布时间】:2013-10-30 20:09:57
【问题描述】:

我正在使用此代码:

//get days
$a = date_create($arrive);
$d = date_create($leave);
//$days = date_diff($d,$a);

echo '<input type="hidden" id="days" value="'.date_diff($d,$a).'"/>';

并收到此错误:可捕获的致命错误:无法将 DateInterval 类的对象转换为字符串

我不知道如何解决这个问题。

【问题讨论】:

    标签: php datetime date-math


    【解决方案1】:

    date_diff() 返回一个 DateInterval 对象,您需要调用 format() 以从中获取实际值。在这种情况下,您将使用%d 来获取天数。

    //get days
    $a = date_create($arrive);
    $d = date_create($leave);
    $diff = date_diff($d,$a);
    
    echo '<input type="hidden" id="days" value="'.$diff->format("%d").'"/>';
    

    请记住,这只会上升到 31。从那里您将需要使用 %m 和 %d 来显示月份。

    See it in action

    【讨论】:

    • 你可以使用$diff-&gt;days(或$diff-&gt;d):-D
    • @RocketHazmat 我总是忘记了!
    • 错误消失了,但是当我记录隐藏输入时它显示未定义。
    • 您能否为我们提供$arrive 和$leave 的有效值,以便我们进行更好的测试?
    • @RocketHazmat & @JohnConde: $diff-&gt;days 和 $diff-&gt;d 不是一回事。 -&gt;days 返回日期时间之间的总天数,其中 -&gt;d 仅返回带有结转点的天数,因此 -&gt;d 不能大于 31...
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 2014-01-08
    • 2015-09-05
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多