溫馨提示×

php dateperiod 如何處理節假日

PHP
小樊
103
2024-12-02 23:47:59
欄目: 編程語言

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-012022-12-31,并使用 DateInterval 設置為每天。接下來,我們創建了一個 DatePeriod 實例,跳過節假日,并將開始日期設置為 $startDate,結束日期設置為 $endDate 的下一天,然后減去一天。最后,我們遍歷日期范圍內的每一天,跳過節假日,并輸出日期。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女