DatePeriod
是 PHP 中用于创建日期范围的类,它允许你轻松地遍历日期范围内的每一天。要处理节假日,你可以创建一个包含节假日的自定义日历,然后将其传递给 DatePeriod
类。以下是一个示例:
add(new DateTime('2022-01-01')); // New Year's Day $holidays->add(new DateTime('2022-07-04')); // Independence Day $holidays->add(new DateTime('2022-12-25')); // Christmas Day // 创建一个日期范围 $startDate = new DateTime('2022-01-01', $holidays); $endDate = new DateTime('2022-12-31', $holidays); $interval = new DateInterval('P1D'); // 每天 // 创建一个 DatePeriod 实例,跳过节假日 $period = new DatePeriod($startDate, $interval, $endDate->add($interval)->modify('-1 day'), DatePeriod::EXCLUDE_START_DATE); // 遍历日期范围内的每一天,跳过节假日 foreach ($period as $date) { if ($date->format('Y-m-d') == '2022-01-01' || $date->format('Y-m-d') == '2022-07-04' || $date->format('Y-m-d') == '2022-12-25') { continue; } echo $date->format('Y-m-d') . PHP_EOL; }
在这个示例中,我们首先创建了一个包含节假日的日历,并将其设置为纽约时区。然后,我们创建了一个日期范围,从 2022-01-01
到 2022-12-31
,并使用 DateInterval
设置为每天。接下来,我们创建了一个 DatePeriod
实例,跳过节假日,并将开始日期设置为 $startDate
,结束日期设置为 $endDate
的下一天,然后减去一天。最后,我们遍历日期范围内的每一天,跳过节假日,并输出日期。