DatePeriod
是 PHP 中用于創建日期范圍的類,它允許你輕松地遍歷日期范圍內的每一天。要處理節假日,你可以創建一個包含節假日的自定義日歷,然后將其傳遞給 DatePeriod
類。以下是一個示例:
<?php
require 'vendor/autoload.php';
use DateTime;
use DateInterval;
use DatePeriod;
use DateTimeZone;
// 創建一個包含節假日的日歷
$holidays = new DateTimeZone('America/New_York');
$holidays->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
的下一天,然后減去一天。最后,我們遍歷日期范圍內的每一天,跳過節假日,并輸出日期。