考虑两个日期'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中的任何解决方案都会感激不尽。谢谢。
答案 0 :(得分:1)
如果您希望在此时间间隔内获得2
天,则只能+1
结果,因为所有功能组合都不会提供2
天。
$date11 = strtotime($date11);
$date22 = strtotime($date22);
$diff = $date22 - $date11;
$diff_in_days = floor($diff/(60*60*24)) + 1;
答案 1 :(得分:1)
您可以使用DateTime和DateInterval并添加1天吗?
<?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.";