我有:
$weekdays = ['mon','thu'];
$time = ['hour' => 20, 'minute' => 0];
$sinceDateTime = new \DateTime(...);
$amount = 6;
我需要在$amount = 6
之后生成$sinceDateTime
x个DateTime,但只有$weekdays = ['mon','thu']
。
示例1)假设$sinceDateTime
是2019-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)假设$sinceDateTime
是2019-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做一些逻辑。一切看起来都很丑陋,而且大多数都是错误的,很难调试。
您看到完成它的任何好方法吗? :)