https://github.com/sunaoka/holidays
Holiday calculation library for PHP
https://github.com/sunaoka/holidays
holiday php
Last synced: 7 months ago
JSON representation
Holiday calculation library for PHP
- Host: GitHub
- URL: https://github.com/sunaoka/holidays
- Owner: sunaoka
- License: mit
- Created: 2022-01-27T06:27:30.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2024-10-25T01:19:49.000Z (12 months ago)
- Last Synced: 2024-10-26T14:38:16.726Z (12 months ago)
- Topics: holiday, php
- Language: PHP
- Homepage: https://packagist.org/packages/sunaoka/holidays
- Size: 205 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Holiday calculation library for PHP
[](https://packagist.org/packages/sunaoka/holidays)
[](https://packagist.org/packages/sunaoka/holidays)
[](composer.json)
[](https://github.com/sunaoka/holidays/actions/workflows/test.yml)
[](https://codecov.io/gh/sunaoka/holidays)---
## Supported Countries
| Country | Code |
|-------------------------------|------|
| :cn: China | `CN` |
| :de: Germany | `DE` |
| :fr: France | `FR` |
| :gb: United Kingdom | `GB` |
| :hong_kong: Hong Kong | `HK` |
| :indonesia: Indonesia | `ID` |
| :it: Italy | `IT` |
| :jp: Japan | `JP` |
| :kr: Korea | `KR` |
| :luxembourg: Luxembourg | `LU` |
| :singapore: Singapore | `SG` |
| :taiwan: Taiwan | `TW` |
| :us: United States of America | `US` |## Installation
```bash
composer require sunaoka/holidays
```## Basic Usage
### Finds whether a date is a holiday
```php
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
```### Returns a list of holidays
```php
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"
// }
```### Returns holidays for a given date range
```php
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"
// }
// }
```### Add custom holiday
```php
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
```### Update holiday data to latest
```bash
php ./vendor/bin/holiday-update
```### Remove unused country holidays
To avoid shipping unused country holidays, you can run the `Sunaoka\\Holidays\\Task\\Composer::removeHolidays` task and specify the services you want to keep in `composer.json`:
```json
{
"require": {
"sunaoka/holidays": "^1.1"
},
"scripts": {
"pre-autoload-dump": [
"Sunaoka\\Holidays\\Task\\Composer::removeHolidays"
]
},
"extra": {
"sunaoka/holidays": [
"jp",
"us"
]
}
}
```In this example, when running `composer update` or `composer install`, all holidays except Japan (`jp`) and United States of America (`us`) will be removed.