【问题标题】:Date range between two dates with given time给定时间的两个日期之间的日期范围
【发布时间】:2019-06-01 10:31:24
【问题描述】:

我需要计算两个给定日期之间的天数和时间。例如,“06/01/2019 09:00”和“06/02/2019 22:00”之间的日期对我来说应该算作 2 天。我尝试了下面的代码,但没有得到我需要的结果。

关于如何计算结果的任何想法?

$to = $_GET['end_date'];
$dteStart = new DateTime($from); 
$dteEnd   = new DateTime($to); 
$diff  = $dteStart->diff($dteEnd); 
print $diff->format("%H:%I");

【问题讨论】:

  • 是的,它可以工作,但没有设置时间范围。我需要的是根据给定时间计算两天之间的天数。例如 06/02/2019 09:00 和 06/03/2019 09:00,应计为 1 天,06/01/2019 09:00' 和 '06/02/2019 22:00' 应计为 2天。

标签: php date-range


【解决方案1】:

您可以将总天数计算为:

print $diff->format('%D') + (0 < $diff->format('%H') ? 1 : 0);
// %D - gives you number of days between dates
// and if there're more hours between dates - add one day 

// probably you also want to consider minutes, 
// so as "1 day 10 minutes" diff should also be 
// considered as 2 days, then:
print $diff->format('%D') + ((0 < $diff->format('%H') || 0 < $diff->format('%I')) ? 1 : 0);

【讨论】:

  • 非常感谢您的回复。我试过你的代码,它似乎适用于我上面给出的日期。但是当我有 06/02/2019 09:00 06/03/2019 09:00 时,这应该算作 1 天,而我得到的结果是 2 天。所以我需要的是,在 24 小时过去后计算 +1 天。
  • 我猜我网站的缓存出了点问题,它算作 2 天。我再次尝试使用您的代码,它运行完美!非常感谢您的帮助!!!
  • 最后一个问题。是否也可以将 06/02/2019 22:00 和 06/03/2019 22:30 计为 2 天? 24小时后的一个小时,我似乎算作2天。
  • 您是否注意到我的回答中的第二个代码块?
  • 是的,在您将链接发布给编辑后,我错过了。再次感谢!
【解决方案2】:
$diff  = $dteStart->diff($dteEnd)->days + 1;
echo $diff;

有一天的差异,但我猜你也想计算当天。

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 2023-03-30
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2020-07-06
    相关资源
    最近更新 更多