我想根据每周的重复找出下一个X日期。例如,今天的日期是2023年5月8日,我想找出接下来的4个星期一和星期五的日期(即每周周一、周五各4次)
因此预期结果为:
2023年5月8日
2023年5月12日
2023年5月15日
2023年5月19日
$appointment_start_date = "2023-05-08";
$all_appointments[] = [
'appointment_date' => $appointment_start_date
];
$post['weekly_day'] = ["Monday", "Friday"];
$recurrence_end_after = 4;
// Create a new DateTime object
$date = new \DateTime($appointment_start_date);
for ($i=1; $i<=$recurrence_end_after; $i++) {
foreach ($post['weekly_day'] as $weekly_day) {
if ($i > $recurrence_end_after) {
break;
}
// Modify the date it contains
$date->modify('next ' . $weekly_day);
// Output
$appointment_start_date = $date->format('Y-m-d');
$all_appointments[] = [
'appointment_date' => $appointment_start_date
];
$i++;
}
}
但是这个代码片段没有返回预期的结果。它只是返回
2023-05-08、2023-05-15、2023-05-19、2023-05-22,因此跳过星期五日期(即2023年5月12日)
多举几例
输入日期:2023年6月1日。
recurrence_end_after:6.
weekly_day:Monday,Friday.
预期输出:
- 2023年6月1日
- 2023年6月2日
- 2023年6月5日
- 2023年6月9日
- 2023年6月12日
- 2023年6月19日
输入日期:2023年5月10日。
recurrence_end_after:4.
weekly_day:Saturday,Sunday预期产量:
- 2023年5月10日
- 二〇二三年五月十三日
- 2023年5月14日
- 2023年5月19日
1条答案
按热度按时间yi0zb3m41#