PHP

php dateperiod 如何处理节假日

小樊
81
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
看了该问题的人还看了