繁体   English   中英

如何计算两天之间的天数,包括开始日期和结束日期

[英]how to calculate days between two days including start date and end date

考虑两个日期“ 2011-01-01”和“ 2011-01-02”。我想计算这两个日期之间的天数。我想要的结果是2天(即包括开始日期和结束日期)。我在php和mysql中使用了几个日期函数,但是所有函数都返回1作为答案。

$date11 = '2011-01-01';
$date22 = '2011-01-02';
    $dt1 = new DateTime($date11);
$dt2 = new DateTime($date22);
$diff = $dt2->diff($dt1);
echo $diff->format("%a"); 

php或mysql中的任何解决方案将不胜感激。

如果您希望在此间隔内获得2天,则只能对结果+1 ,因为所有功能组合都不会给出2天。

$date11 = strtotime($date11);
$date22 = strtotime($date22);
$diff = $date22 - $date11;
$diff_in_days = floor($diff/(60*60*24)) + 1;

您可以使用DateTime和DateInterval并添加1天吗?

DateTime DateInterval

<?php

    $d1 = new DateTime('2011-01-01');
    $d2 = new DateTime('2011-01-02');
    $d2->add(new DateInterval('24h'));

    $interval = $d2->diff($d1);

    $interval->format('%d Days');
    $interval->format('%h Hours');
?>

在mysql中:

 select abs(datediff('2011-01-01','2011-01-02'))+1 as difference;
+------------+
| difference |
+------------+
|          2 |
+------------+
1 row in set (0.00 sec)

datediff()返回两个日期之间的天数, abs()确保在切换第一个和第二个日期以及最后一个+1时我们不会得到负值,因为您希望开始和结束日期包含在数字中。

使用DateDiff 在线文档将这个答案作为第一个示例:

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$datetime2->modify("+1 days");
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days'); // output

另一种方法是:

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
$diff = $interval->days + 1;
echo $diff . " days.";

暂无
暂无

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

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