spatie / holidays
计算公众假期
1.13.1
2024-09-06 08:26 UTC
Requires
- php: ^8.1
- ext-calendar: *
- ext-intl: *
- nesbot/carbon: ^2.72.1|^3.0
Requires (Dev)
- laravel/pint: ^1.0
- laravel/prompts: ^0.1.15
- pestphp/pest: ^2.31
- phpstan/phpstan: ^1.10.56
- rector/rector: ^1.0
- spatie/invade: ^2.0
- spatie/ray: ^1.40.1
- symfony/var-dumper: ^6.4|^7.1
- dev-main
- 1.13.1
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.2
- 0.0.1
- dev-dependabot/composer/laravel/prompts-tw-0.2.0
- dev-dependabot/composer/pestphp/pest-tw-3.0
- dev-dependabot/composer/symfony/var-dumper-tw-7.1
- dev-feature/observed-holidays-filtering
This package is auto-updated.
Last update: 2024-09-16 15:26:36 UTC
README
此包可以为国家计算公众假期。
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,或者至少打开一个问题。
添加新国家
- 在
Countries
目录中创建一个新类。它应该扩展Country
类。 - 在
tests
目录中添加新国家的测试。 - 运行测试以创建快照。
- 在新创建的快照中验证结果是否正确。
- 如果国家有多个语言,请在
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)。请参阅许可文件以获取更多信息。