gpt4 book ai didi

php - 如何在 DatePeriod 中包含结束日期?

转载 作者:可可西里 更新时间:2023-10-31 22:19:04 24 4
gpt4 key购买 nike

我正在尝试获取本周所有工作日的日期范围。为此,我编写了以下代码。

代码

$begin = new DateTime('monday this week'); 2016-07-04
$end = clone $begin;
$end->modify('next friday'); // 2016-07-08

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);



foreach($daterange as $date) {
echo $date->format('Y-m-d')."<br />";
}

输出

  • 2016-07-04
  • 2016-07-05
  • 2016-07-06
  • 2016-07-07

在输出中缺少星期五。我可以通过执行 $end->modify('next saturday') 来解决这个问题,但我想知道为什么 DatePeriod 的最后一天不包含在范围内。

最佳答案

迭代器似乎检查时间和日期,如果 endDate 中的时间小于或等于开始日期中的时间,它会排除结束元素。

因此确保结束日期的时间至少比开始日期的时间大一秒。

// this will default to a time of 00:00:00
$begin = new DateTime('monday this week'); //2016-07-04

$end = clone $begin;

// this will default to a time of 00:00:00
$end->modify('next friday'); // 2016-07-08

$end->setTime(0,0,1); // new line

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);

foreach($daterange as $date) {
echo $date->format('Y-m-d')."<br />";
}

关于php - 如何在 DatePeriod 中包含结束日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38226215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com