【问题标题】:Calculate actual total day from starting date to ending date计算从开始日期到结束日期的实际总天数
【发布时间】:2014-03-15 04:59:32
【问题描述】:

我有一些关于计算从开始日期结束日期的实际日期的简单问题。

里面的计算会包括闰年,一个月有多少天。

示例:
开始日期: 15-03-2014
结束日期: 2015 年 11 月 6 日

结果:453 天

我读过一个与此非常相似的问题。但这不是我想要的。
How to calculate the difference between two dates using PHP?

【问题讨论】:

  • 我更喜欢使用 Unix 时间戳来解决所有这些问题。当使用或多或少纯粹的时间符号时,我们的日历系统的奇怪之处是无关紧要的。只需使用$daysApart = ($date1-$date2)/86400
  • 我正在使用一些与酒店相关的系统。因此,我需要非常准确地显示剩余天数。
  • @Nanne,我曾提到我读过这个问题,但答案不是我想要的。请检查我在我的问题中附加的链接。

标签: php date


【解决方案1】:

实现这一点的最佳方法是使用 DateTime(和 DateInterval)对象。将每个日期字符串转换为 DateTime 对象,并使用DateTime::diff() 方法计算两者之间的天数:

$dt1 = new DateTime($date1);
$dt2 = new DateTime($date2);
$diff = $dt2->diff($dt1);
echo $diff->format("%a"); // => 453

【讨论】:

    【解决方案2】:

    使用 Jquery 您可以获得实际天数

    var due = due_date_month + '/' + due_date_day + '/' + due_date_year;
    var deliver = deliver_date_month + '/' + deliver_date_day + '/' + deliver_date_year;
    
    var deliver_date = new Date(deliver);
    
    var due_date = new Date(due);
    
    if (due_date > deliver_date) {
    var difference = Math.floor(due_date - deliver_date);
    
    difference = parseInt(difference / 86400000);
    alert(difference);
    
    }                                                      
    

    【讨论】:

    • 不是每一天都有 864000 秒。
    【解决方案3】:

    您可以使用 strtotime() 将日期转换为 unix 时间, 减去日期,并将结果除以 86400(一天中的秒数), 像这样:

    $start = strtotime($date1);
    $end = strtotime($date2);
    $diff = $end-$start;
    $days = ceil($diff/86400); //or floor depends what you need
    

    p.s.:$start 和 $end 必须是美国格式

    【讨论】:

    • 并非每一天都有 864000 秒(如果考虑 DST)。
    【解决方案4】:
    DATEDIFF('ending date','Starting date');
    
        Ex. 
    $q=mysql_query('select DATEDIFF('$end_date','$start_date')' AS total_days <from table name>');
        $result=mysql_fetch_array($q);
    
        echo $result['total_days'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 2012-09-06
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      相关资源
      最近更新 更多