从特定的DateTime开始为预定的工作日生成给定的\ DateTimes数量

时间:2019-05-09 18:10:55

标签: php datetime

我有:

$weekdays = ['mon','thu'];
$time = ['hour' => 20, 'minute' => 0];
$sinceDateTime = new \DateTime(...);
$amount = 6;

我需要在$amount = 6之后生成$sinceDateTime x个DateTime,但只有$weekdays = ['mon','thu']


示例1)假设$sinceDateTime2019-05-09 19:00:00(thu),我想得到这个DateTimes:

2019-05-09 (thu)
2019-05-13 (mon)
2019-05-16 (thu)
2019-05-20 (mon)
2019-05-23 (thu)
2019-05-27 (mon)

示例2)假设$sinceDateTime2019-05-09 20:25:00(thu),我想获得这个DateTimes:

2019-05-13 (mon)
2019-05-16 (thu)
2019-05-20 (mon)
2019-05-23 (thu)
2019-05-27 (mon)
2019-05-30 (thu)

时间并不是很重要,但是如果$time->hour是生成的工作日之一,则生成的DateTime必须在给定$time->minute$sinceDateTime之后。


我尝试过:用int检查工作日循环,对巨大的if和or做一些逻辑。一切看起来都很丑陋,而且大多数都是错误的,很难调试。

您看到完成它的任何好方法吗? :)

0 个答案:

没有答案