【问题标题】:Collect the number of days between two dates [duplicate]收集两个日期之间的天数[重复]
【发布时间】:2012-06-07 14:05:33
【问题描述】:

可能重复:
How to find number of days between two dates using php

收集两个日期之间的天数,例如 2012 年 2 月 11 日 之间 2012 年 2 月 12 日

结果是天数=1天

【问题讨论】:

  • 您已标记此 AJAX 和 PHP。您需要知道如何在 Javascript 或 PHP 中执行此操作吗?

标签: php ajax


【解决方案1】:

您可以使用 strtotime() 函数将日期转换为时间戳:

$date1 = strtotime("02/11/2012");
$date2 = strtotime("02/12/2012");
$difference = $date1 - $date2;

然后你有一个新的时间戳,以秒为单位的差异,所以你可以使用 date() 函数将其转换为天:

$days = date("d", $difference);

【讨论】:

    【解决方案2】:

    PHP >= 5.3 你可以使用DateTime::Diff:

    <?php
      $datetime1 = new DateTime('2009-10-11');
      $datetime2 = new DateTime('2009-10-13');
      $interval = $datetime1->diff($datetime2);
      echo $interval->format('%R%a days');
    ?>
    

    【讨论】:

    • 这可能比使用 strtotime() 慢得多,但它是一种替代方法 ;)
    • @Jeroen:虽然确实考虑了夏令时/闰年和其他因素......
    • 这会有什么不同? strtotime() 返回的 UNIX 时间戳只是自 1970 年 1 月 1 日以来的秒数,因此会自动“考虑”闰年。
    • @Jeroen:那条评论是关于操纵DateTime 对象的,我觉得这比基于每天86400 秒的计算更可靠。 DateTime 对象(以及它在 PHP 5.3 中的改进)更加稳定;这就是我的意思。
    • 当然,如果你要操纵它,这是要走的路。
    【解决方案3】:

    试试这个

    function dateDiff ($d1, $d2) {
    
      return round(abs(strtotime($d1)-strtotime($d2))/86400);
    
    } 
    

    该函数使用 PHP ABS() 绝对值始终返回一个正数作为两个日期之间的天数。

    【讨论】:

      【解决方案4】:
      echo (strtotime('02/12/2012') - strtotime('02/11/2012')) / (24*60*60);
      

      这一行将两个日期转换为 unix 时间戳,减去它们,然后除以一天中的秒数。

      【讨论】:

        猜你喜欢
        • 2012-07-31
        • 1970-01-01
        • 2012-12-07
        • 2013-07-24
        • 2012-05-21
        • 1970-01-01
        • 2014-07-08
        • 2012-01-05
        相关资源
        最近更新 更多