spatie/holidays

计算公众假期

资助包维护!
spatie

安装次数: 64 565

依赖: 0

建议者: 0

安全: 0

星级: 311

关注者: 4

分支: 194

公开问题: 5

1.13.1 2024-09-06 08:26 UTC

README

Latest Version on Packagist Tests Total Downloads

此包可以为国家计算公众假期。

use Spatie\Holidays\Holidays;

// returns an array of Belgian holidays
// for the current year
$holidays = Holidays::for('be')->get();

支持我们

我们投入大量资源创建一流的开放式源代码包。您可以通过购买我们的付费产品之一来支持我们。

我们非常感谢您从您的家乡寄给我们明信片,说明您正在使用我们的哪些包。您可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上

安装

您可以通过composer安装此包。

composer require spatie/holidays

支持的国家

我们支持此目录中列出的国家。如果您想添加一个国家,请创建一个pull request。

用法

您可以通过使用get方法来获取一个国家的所有假期。

use Spatie\Holidays\Holidays;
use Spatie\Holidays\Countries\Belgium;

// returns an array of Belgian holidays
// for the current year
$holidays = Holidays::for(Belgium::make())->get(); 

或者,您也可以将一个ISO 3166-1代码传递给for方法。对于基于地区的假期,这些将不包括在内。请使用国家类。

use Spatie\Holidays\Holidays;

// returns an array of Belgian holidays
// for the current year
$holidays = Holidays::for('be')->get();

获取特定年份的假期

您也可以传递一个特定的年份。

use Spatie\Holidays\Holidays;

$holidays = Holidays::for(country: 'be', year: 2024)->get();

获取两个日期之间的假期

您还可以获取两个日期之间(包括)的所有假期。

use Spatie\Holidays\Holidays;

$holidays = Holidays::for('be')->getInRange('2023-06-01', '2024-05-31');

获取特定语言的假期

$holidays = Holidays::for(country: 'be', locale: 'fr')->get();

如果国家不支持区域,将抛出异常。

确定日期是否为假期

如果您需要查看一个日期是否是假期,您可以使用isHoliday方法。

use Spatie\Holidays\Holidays;

Holidays::for('be')->isHoliday('2024-01-01'); // true

获取假期的名称

如果您需要假期的名称,您可以使用getName方法。

use Spatie\Holidays\Holidays;

Holidays::for('be')->getName('2024-01-01'); // Nieuwjaar

确定是否支持国家

要验证是否支持国家,您可以使用has方法。

use Spatie\Holidays\Holidays;

Holidays::has('be'); // true
Holidays::has('unknown'); // false

贡献

这是一个由社区驱动的包。如果您发现任何错误,请创建一个带有修正的pull request,或者至少打开一个问题。

添加新国家

  1. Countries目录中创建一个新类。它应该扩展Country类。
  2. tests目录中添加新国家的测试。
  3. 运行测试以创建快照。
  4. 在新创建的快照中验证结果是否正确。
  5. 如果国家有多个语言,请在lang/目录中添加一个文件。

如果您的国家有计算假期的特定规则,例如地区特定的假期,您可以将此传递给国家类的构造函数。

$holidays = Holidays::for(Germany::make('DE-BW'))->get();

DE-BW将传递给国家构造函数的区域参数。

class Germany extends Country
{
    protected function __construct(
        protected ?string $region = null,
    ) {
    }

    protected function allHolidays(int $year): array
    {
        // Here you can use $this->region (or other variables) to calculate holidays
    }

有关更多详细信息,请参阅CONTRIBUTING

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

安全漏洞

请查看我们的安全策略,了解如何报告安全漏洞。

致谢

许可协议

MIT 许可协议 (MIT)。请参阅许可文件以获取更多信息。