sunaoka/holidays

假日计算库

v1.5.0 2024-08-27 09:18 UTC

README

Latest License PHP Test codecov

支持国家

安装

composer require sunaoka/holidays

基本用法

查找某个日期是否为假日

use Sunaoka\Holidays\Holidays;

// Is January 1, 2021 a holiday in the United States (US)?
$holidays = new Holidays('US');
$holidays->isHoliday('2021-01-01');
// => true

返回假日列表

use Sunaoka\Holidays\Holidays;

// Returns United States (US) Holidays in 2021
$holidays = new Holidays('US');
$holidays->getHolidays(2021);
// =>
// array(36) {
//   [0] =>
//   class Sunaoka\Holidays\Holiday#1 (4) {
//     protected $name =>
//     string(14) "New Year's Day"
//     public $date =>
//     string(26) "2021-01-01 00:00:00.000000"
//     public $timezone_type =>
//     int(3)
//     public $timezone =>
//     string(3) "UTC"
//   }
//   [1] =>
//   class Sunaoka\Holidays\Holiday#2 (4) {
//     protected $name =>
//     string(26) "Martin Luther King Jr. Day"
//     public $date =>
//     string(26) "2021-01-18 00:00:00.000000"
//     public $timezone_type =>
//     int(3)
//     public $timezone =>
//     string(3) "UTC"
//   }
//     :
//     :
//     :
//   [35] =>
//   class Sunaoka\Holidays\Holiday#36 (4) {
//     protected $name =>
//     string(14) "New Year's Eve"
//     public $date =>
//     string(26) "2021-12-31 00:00:00.000000"
//     public $timezone_type =>
//     int(3)
//     public $timezone =>
//     string(3) "UTC"
//   }

返回给定日期范围内的假日

use Sunaoka\Holidays\Holidays;

// Return United States (US) holidays from 2021-01-01 to 2021-01-07
$holidays = new Holidays('US');
$holidays->between(date('2021-01-01'), date('2021-01-07'));
// array(1) {
//   [0] =>
//   class Sunaoka\Holidays\Holiday#1 (4) {
//     protected $name =>
//     string(14) "New Year's Day"
//     public $date =>
//     string(26) "2021-01-01 00:00:00.000000"
//     public $timezone_type =>
//     int(3)
//     public $timezone =>
//     string(3) "UTC"
//   }
// }

添加自定义假日

use Sunaoka\Holidays\Holidays;

// Add 2021-05-05 as my birthday
$holidays = new Holidays('US');
$holidays->addHoliday(new Holiday('2021-05-05', 'My Birthday 🎉'));

$holidays->isHoliday('2021-05-05');
// => true

更新假日数据到最新版本

php ./vendor/bin/holiday-update

删除未使用的国家假日

为了避免发送未使用的国家假日,您可以运行 Sunaoka\\Holidays\\Task\\Composer::removeHolidays 任务,并在 composer.json 中指定您想要保留的服务

{
    "require": {
      "sunaoka/holidays": "^1.1"
    },
    "scripts": {
        "pre-autoload-dump": [
            "Sunaoka\\Holidays\\Task\\Composer::removeHolidays"
        ]
    },
    "extra": {
        "sunaoka/holidays": [
            "jp",
            "us"
        ]
    }
}

在本例中,当运行 composer updatecomposer install 时,除了日本(jp)和美国(us)之外的所有假日将被删除。