涉及的PHP日期差异天数

涉及的PHP日期差异天数,php,datetime,datediff,days,Php,Datetime,Datediff,Days,我需要知道日期差异涉及多少天。\n例如: <? $start = new DateTime('2014-06-29 14:00:00'); $ende = new DateTime('2014-07-02 05:45:00'); $diff = $start->diff($ende); echo $diff->format('%R'); echo $diff->days; ?> 上述代码回显+2 我期望的结果是4,因为7月29日、30日、1日和2日是“感

我需要知道日期差异涉及多少天。\n例如:

<?

$start = new DateTime('2014-06-29 14:00:00');
$ende = new DateTime('2014-07-02 05:45:00');

$diff = $start->diff($ende);

echo $diff->format('%R');
echo $diff->days;
?>

上述代码回显+2

我期望的结果是4,因为7月29日、30日、1日和2日是“感动”的。
我不知道如何用给定的函数来实现这一点。编写一个日期减法似乎为错误敞开了大门。

PHP似乎从不包括执行差异或处理日期周期的最后一天。在您的情况下,如果时间不是一个因素,只需删除每个日期的时间,然后在最后一个日期添加一天。然后,最后一天将被忽略,并将获得准确的结果

<?php

$start = new DateTime('2014-06-29');
$ende = (new DateTime('2014-07-02'))->modify('+1 day');
$diff = $start->diff($ende);

echo $diff->format('%R');
echo $diff->days;
?>


如果你仔细想想,你会得到正确的答案

<?php
    $start = strtotime('2014-06-29 14:00:00');
    $end = strtotime('2014-07-02 05:45:00');

    $diff = $end - $start;

    echo 'DAYS DIFF = ' . date('d', $diff) . PHP_EOL;
开始时间是2014-06-29 14:00:00

一天的差价为2014-06-30 14:00:00

两天的差额为2014-07-01 14:00:00

3天的差额为2014-07-02 14:00:00

4天的差额为2014-07-03 14:00:00

您的结束日期是2014-07-02 05:45:00,这将是2天15小时45分钟,因此仅显示天数差异,答案将是2

答案决不会是4天

编辑/更新:

这就是答案4

<?php
    $start = strtotime('2014-06-29');
    $end = strtotime('2014-07-02');

    $diff = $end - $start;

    echo 'DAYS DIFF = ' . date('d', $diff) . PHP_EOL;
试试这个:

$start = new DateTime('2014-06-29 14:00:00');
$ende = new DateTime('2014-07-02 05:45:00');
$start->setTime(0, 0);
$ende ->setTime(0, 0);
$diff = date_diff($start, $ende);
echo $diff->format('%R%a')+1;

“+1”,因为两天之间的差异减少了一个。

事实上,时间是一个因素,因为时间以UTC为单位,但天数与当地时间相关,这意味着$ende=“2014-07-02 23:00”将是当地时间的第三个。因此,去掉时间标签不是一种选择。还有其他想法吗?我不是说区别是错的。我只是说这不是我需要的答案。你知道我是如何回答我的问题的吗?