gpt4 book ai didi

PHP DateInterval 每 x 周选择一周中的几天

转载 作者:行者123 更新时间:2023-12-02 21:45:29 24 4
gpt4 key购买 nike

我编写了一些用于输入重复事件的代码。最棘手的部分是用户可以创建一个事件并让它在每 x 周的一周中的选定日期重复。<​​/p>

例如,用户可以选择周一、周三、周五并每 3 周重复一次。

很容易做到,如果每周 - 我可以做这样的事情:

$start = new DateTime( '2013-10-01' );
$end = new DateTime( '2014-01-01 23:59:59' );
$interval = new DateInterval('P1D');

$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
$dayOfWeek = $date->format('l');
if ($dayOfWeek == 'Monday' || $dayOfWeek == 'Wednesday' || $dayOfWeek == 'Wednesday') {
// do something
}
}

对于上面的代码,我如何修改它以包含每三周的周一/周三/周五?有没有更好的方法来实现这一目标,而无需每天循环?

我想我可以使用 $date->format('w');这会给我一年中的数字周。然后我可以有一个计数器并重置它。

最佳答案

作为一种可能的方法,您可以检查 foreach 内的星期是否发生变化。

<?php

$start = new DateTime( '2013-10-01' );
$end = new DateTime( '2014-01-01 23:59:59' );
$interval = new DateInterval('P1D');

$period = new DatePeriod($start, $interval, $end);

// only trigger every three weeks...
$weekInterval = 3;

// initialize fake week
$fakeWeek = 0;
$currentWeek = $start->format('W');

foreach ($period as $date) {

if ($date->format('W') !== $currentWeek) {
$currentWeek = $date->format('W');
$fakeWeek++;
print ' WEEK ' . $currentWeek . '<br/>';
}

if ($fakeWeek % $weekInterval !== 0) {
continue;
}

$dayOfWeek = $date->format('l');
if ($dayOfWeek == 'Monday' || $dayOfWeek == 'Wednesday' || $dayOfWeek == 'Friday') {
print $date->format('Y-m-d H:i:s') . ' ' . $dayOfWeek . '<br/>';
}
}

关于PHP DateInterval 每 x 周选择一周中的几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605169/

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