Skip to content

AndresReyesDev/holidays

 
 

Repository files navigation

Calculate public holidays for a country

Latest Version on Packagist Tests Total Downloads

This package can calculate public holidays for a country.

use Spatie\Holidays\Holidays;

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

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

composer require spatie/holidays

Supported countries

We support the countries listed in this directory. If you want to add a country, please create a pull request.

Usage

You can get all holidays for a country by using the get method.

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(); 

Alternatively, you could also pass an ISO code to the for method.

use Spatie\Holidays\Holidays;

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

Getting holidays for a specific year

You can also pass a specific year.

use Spatie\Holidays\Holidays;

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

Determining if a date is a holiday

If you need to see if a date is a holiday, you can use the isHoliday method.

use Spatie\Holidays\Holidays;

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

Getting the name of a holiday

If you need the name of the holiday, you can use the getName method.

use Spatie\Holidays\Holidays;

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

Contributing a new country

If you want to add a new country, you can create a pull request.

  1. Create a new class in the Countries directory. It should extend the Country class.
  2. Add a test for the new country in the tests directory.
  3. Run the tests so a snapshot gets created.
  4. Verify the result in the newly created snapshot is correct.

In case your country has specific rules for calculating holidays, for example region specific holidays, you can pass this to the constructor of your country class.

$holidays = Holidays::for(Austria::make(region: 'de-bw'))->get();

The value, de-bw, will be passed to the region parameter of the contructor of a country.

class Austria 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
    }

Please see CONTRIBUTING for more details.

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Calculate which days you don't have to work!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%