我写了一些代码,其中我有一个开始日期和天数持续时间,然后得到一个结束日期,即开始日期12月18日,持续时间21天,结束日期1月8日。但是我想推迟结束日期以避免某些假期(12月25日至1月6日),以便结束日期为1月15日。我看到的所有答案都包括如何计算工作日和周末,我不需要。我只是希望能够在一个数组中定义特定的假期,让它看看假期是否在开始日期和结束日期之内,以及是否将结束日期向前移动该天数。
哦,那么日期需要插入数据库。感谢。
答案 0 :(得分:0)
遍历$ holidays数组。如果假期在给定范围内,则在将来的某一天移动结束日期:
$startDate = new DateTime('2015-12-18');
$endDate = new DateTime('2016-01-08');
// $holidays array must be sorted. if not, then sort it first
$holidays = array("2015-12-25","2015-12-26","2016-01-01");
$newEndDate = $endDate;
foreach ($holidays as $holiday) {
$holidayDate = new DateTime($holiday);
if ($startDate <= $holidayDate && $holidayDate <= $newEndDate) {
// there is a holiday in the range
$newEndDate->add(new DateInterval('P1D'));
}
}
echo($newEndDate->format('Y-m-d'));
答案 1 :(得分:0)
感谢所有发布可能解决方案的人。我通过在php页面添加一个选择器来解决问题,该页面在结束日期增加了7天,14天或21天(用户将其视为1周,2周等),这解决了问题。