如果有假期,请计算结束日期

时间:2015-12-13 13:31:18

标签: php mysql

我写了一些代码,其中我有一个开始日期和天数持续时间,然后得到一个结束日期,即开始日期12月18日,持续时间21天,结束日期1月8日。但是我想推迟结束日期以避免某些假期(12月25日至1月6日),以便结束日期为1月15日。我看到的所有答案都包括如何计算工作日和周末,我不需要。我只是希望能够在一个数组中定义特定的假期,让它看看假期是否在开始日期和结束日期之内,以及是否将结束日期向前移动该天数。

哦,那么日期需要插入数据库。感谢。

2 个答案:

答案 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周等),这解决了问题。