gpt4 book ai didi

php - 奇怪的 PHP 日期增量

转载 作者:搜寻专家 更新时间:2023-10-31 21:57:49 24 4
gpt4 key购买 nike

我试图做一个循环来查找两个日期之间的周末,结果真的很奇怪。

我必须遵循我认为应该可以正常工作的代码。

$weekends = array();
// yyyy-mm-dd
$firstWeekend = '2015-09-04';
$lastWeekend = '2015-12-25';
$firstWeekendTime = strtotime($firstWeekend);
$lastWeekendTime = strtotime($lastWeekend);

$totalWeekends = 0;
for ($i = $firstWeekendTime; $i <= $lastWeekendTime; $i += (7 * 86400)) {
$totalWeekends++;
$weekends[date('Y-m-d', $i)] = array(
date('Y-m-d', $i),
date('Y-m-d', strtotime(date('Y-m-d', $i) . '+ 2 days'))
);
}

例如。输出:

[2015-10-16] => Array
(
[0] => 2015-10-16
[1] => 2015-10-18
)

[2015-10-23] => Array
(
[0] => 2015-10-23
[1] => 2015-10-25
)

[2015-10-29] => Array
(
[0] => 2015-10-29
[1] => 2015-10-31
)

[2015-11-05] => Array
(
[0] => 2015-11-05
[1] => 2015-11-07
)

但这不正确,因为 2015-10-23 之后的下一个周末是 2015-10-30。所以输出应该是这样的:

[2015-10-16] => Array
(
[0] => 2015-10-16
[1] => 2015-10-18
)

[2015-10-23] => Array
(
[0] => 2015-10-23
[1] => 2015-10-25
)

[2015-10-30] => Array
(
[0] => 2015-10-30
[1] => 2015-11-01
)

[2015-11-05] => Array
(
[0] => 2015-11-05
[1] => 2015-11-07
)

我终于通过设置默认时区并在不改变任何其他任何东西的情况下使其工作。

date_default_timezone_set('America/Los_Angeles');

有人能理解为什么没有时区这个递增会失败吗?最奇怪的是它只在 ~2015-10-25 左右失败

我不想找到周末的其他选择...我只是想了解为什么会这样。

谢谢。

最佳答案

只是你必须像这样用增量值改变for循环条件

for ($i = $firstWeekendTime; $i <= $lastWeekendTime; $i = strtotime(date('Y-m-d', strtotime(date('Y-m-d', $i) . '+ 7 days'))))

代替

for ($i = $firstWeekendTime; $i <= $lastWeekendTime; $i += (7 * 86400))

关于php - 奇怪的 PHP 日期增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31742489/

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