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

时间:2014-05-13 14:37:13

标签: php mysql 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中的任何解决方案都会感激不尽。谢谢。

4 个答案:

答案 0 :(得分:1)

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

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

Example

答案 1 :(得分: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');
?>

答案 2 :(得分:1)

在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时不会得到负值,因为你想要开始和结束将包含在数字中。

答案 3 :(得分:0)

使用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.";