【问题标题】:difference days between two dates [duplicate]两个日期之间的差异天数[重复]
【发布时间】:2016-08-08 06:40:06
【问题描述】:
$diff = strtotime( date("Y-m-d",strtotime($row->Released_Date)) ) - strtotime( date("Y-m-d",strtotime($CommitmentDate)));
$days = intval(round($diff/86400));

$s = $days > 1 ? 's' : '';

$status = $days > 0 ? '<i class="fa fa-exclamation" original-title="Day'.$s.' lapsed - '.$days.'<br><i>'.date("F d, Y",strtotime($CommitmentDate)).'</i>"></i>' :
          $days = 0 ? '<i class="fa fa-check" original-title="RELEASED ON TIME<br><i>'.date("F d, Y",strtotime($CommitmentDate)).'</i>"></i>' :
        '<i class="fa fa-star" original-title="RELEASED BEFORE COMMITMENT DATE<br><i>'.date("F d, Y",strtotime($CommitmentDate)).'<br>'.$days.'</i>"></i>';

有一个 $days 返回 zero,但它似乎没有输出准确的 zero,因为我没有看到检查符号...

我真的不知道怎么了……

我用过

$days = intval(round($diff/86400));
$days = int(round($diff/86400);

我试过了 $days = intval($diff/86400);

它返回精确,但我不知道为什么输出说它小于零

这是输出...最后的数字是$days的输出...

enter image description here enter image description here

请帮忙....

【问题讨论】:

  • $row-&gt;Released_Date的格式是什么?
  • 它的 DATE TIME 先生......并且承诺日期在 DATE

标签: php codeigniter date datediff


【解决方案1】:

试试这个

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
$days = $interval->format('%a');
$daySec = $day * 86400;

来源:http://php.net/manual/en/datetime.diff.php

【讨论】:

    【解决方案2】:

    您正在分配$days=0,您必须使用== 运算符进行比较,

    $days == 0 ? '<i class="fa fa-check" original-title="RELEASED ON TIME....
    

    还有一件事,您可以只使用一次 strtotime 来获得差异,例如,

    // no need to convert it in date then again in strtotime
    $diff = strtotime( $row->Released_Date ) - strtotime($CommitmentDate);
    

    已更新,您需要将 else 部分包含在 () 中,否则它不会按预期返回结果,

    $status = $days > 0 ? '<i class="fa fa-exclamation" original-title="Day'.$s.' lapsed - '.$days.'<br><i>'.date("F d, Y",strtotime($CommitmentDate)).'</i>"></i>' :
          ($days == 0 ? '<i class="fa fa-check" original-title="RELEASED ON TIME<br><i>'.date("F d, Y",strtotime($CommitmentDate)).'</i>"></i>' :
      //--^ start enclosing here, with $days == 0 condition
        '<i class="fa fa-star" original-title="RELEASED BEFORE COMMITMENT DATE<br><i>'.
        date("F d, Y",strtotime($CommitmentDate)).'<br>'.$days.'</i>"></i>');
                                                  // -- to here -----------^
    

    【讨论】:

    • 先生,我已经这样做了,但它会将所有输出都发送到 CHECK...
    • 告诉我你的$CommitmentDate$row-&gt;Released_Date
    • 先生,我这样做了 $diff = strtotime( date("Y-m-d",strtotime($row->Released_Date)) ) - strtotime( date("Y-m-d",strtotime($CommitmentDate)));因为 RELEASED_DATE 是日期时间......而 $commitmentDate 只是一个日期
    • 我更新了我的问题,先生,我附上了图片
    • @user6689924,试试我更新的答案。
    猜你喜欢
    • 2013-07-24
    • 2011-03-20
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2011-03-19
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多