繁体   English   中英

PHP中的diff()和date_diff()由于某些原因无法正常工作

[英]diff() and date_diff() in PHP not working for some reason

我在两个日期之间使用PHP的' diff() '或' date_diff() '时遇到问题。 基本上,当我执行任何尝试比较日期或尝试将日期定义为日期的操作时,页面将在此时停止加载。

<?php

    // My starting point is the $dirty_date variable.
    // It is collected from a string, parsed, 
    // and ends up being an integer-based date / seconds past Unix Epoch

    //I am also including some echos along the way for debugging purposes.

    echo "Check 1: ".$dirty_date."<br>";

    $systemdate = date("U");
    echo "Check 2: ".$systemdate."<br>";

    //$interval =  $dirty_date->diff($systemdate);
    echo "check 3: ".$interval;

结果如下:

检查1:1490781836

检查2:1490806703

检查3:

Check 3未返回任何内容,因为我有将其注释掉的行。 我将其注释掉,因为如果启用了该页面,则该点之后不会加载任何其他内容。

首先,未定义$newdate 其次, $dirty_date必须是一个DateTime对象,当前它只是一个整数。 我假设您要比较$dirty_date$systemdate

尝试这个:

$dirty_date_obj = new DateTime();
$dirty_date_obj->setTimestamp((int) $dirty_date);

$system_date_obj = new DateTime();
$system_date_obj->setTimestamp((int) $systemdate);


echo "interval between dirty and system: ".$dirty_date_obj->diff($system_date_obj)->format('%a Days and %h hours');

另外,请在代码的开头键入以下内容以查看错误消息,因此,如果发生某些错误,它不仅是空白页:

error_reporting(E_ALL); ini_set('display_errors', '1');

这是一个例子

    $dirty_date = new \DateTime();
    $dirty_date->setTimestamp("your integer date");
    echo "Check 1: ".$dirty_date->format(\DateTime::ISO8601)."<br>";


    $systemdate = new \DateTime();
    echo "Check 2: ".$systemdate->format(\DateTime::ISO8601)."<br>";

    $interval =  $dirty_date->diff($systemdate);
    echo "check 3: ".$interval->format("%R%a days");

链接到DateInterval($ interval var)格式http://php.net/manual/en/dateinterval.format.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM