【问题标题】:Using DateTime::diff() to return days between two dates使用 DateTime::diff() 返回两个日期之间的天数
【发布时间】:2013-06-24 18:51:35
【问题描述】:

我目前正在使用 DateTime::diff() 返回两个日期之间的天数、小时数、分钟数和秒数。

问题是当差异超过 30 天时,不是返回 33 天,而是返回 1 个月零 3 天。

有没有办法告诉它相应地返回天而不是月。

一些代码:

$date1      =   new DateTime(date('Y-m-d H:i:s', time()));
$date2      =   new DateTime($row['start']);

$interval   =   $date1->diff($date2);

$days       =   $newInfo[$key]['days'] = $interval->format("%d"); 
$hours      =   $newInfo[$key]['hours'] = $interval->format("%h"); 
$minutes    =   $newInfo[$key]['minutes'] = $interval->format("%i"); 
$seconds    =   $newInfo[$key]['seconds'] = $interval->format("%s"); 

【问题讨论】:

    标签: php


    【解决方案1】:

    对于这种情况,有一个特殊的格式参数:

    <?php
    $days = $newInfo[$key]['days'] = $interval->format("%a");
    

    【讨论】:

      【解决方案2】:

      看起来你想使用DateInterval::format()

      来自示例部分:

      $january = new DateTime('2010-01-01');
      $february = new DateTime('2010-02-01');
      $interval = $february->diff($january);
      
      // %a will output the total number of days.
      echo $interval->format('%a total days')."\n";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-14
        • 1970-01-01
        相关资源
        最近更新 更多