holidayChecker

Check whether a given date is a holiday – locale-aware

View the Project on GitHub

This library allows you to check a single day against one or multiple calendars to see whether the given day is a holiday or not.

That also includes “named Days” that are not necessarily “free” but have a special name like “Maundy Thursday”.

Installation

holidayChecker is best installed using composer

composer require org_heigl/holidaychecker

Usage

Simple usage:

$factory  = new HolidayIteratorFactory();
$iterator = $factory->createIteratorFromXmlFile('path/to/a/holiday/file.xml');
$checker  = new Holidaychecker($iterator);

$result = $checker->check(new \DateTime());
// $result will be an instance of Org_Heigl\HolidayChecker\Holiday

$result has 3 methods:

You can also get a HolidayIterator with a 2-letter ISO 3166-1 or a 4-letter ISO 3166-2 code. And when different language-variations are available you can get them by adding the ISO 639-1 language-code before the ISO 3166-code:

// Get the holidays for mainland france
$iterator = $factory->createIteratorFromIso3166('FR');

// Get the holidays for the french overseas-department La Reunion
$iterator = $factory->createIteratorFromIso3166('FR-RE');

// Get the dutch holidays for belgium
$iterator = $factory->createIteratorFromIso3166('fr_BE');

Available Countries

Currently the holidays for these countries are available:

Map of the world

But the list is constantly extending.

Extending

Currently not all countries holidays are available. We are trying to fix that but you might find that exactly the country you need is missing.

As the holidays are retrieved from XML-files you can add your own ones without issue. They need to correspond to the Schema-file and before the schema is checked any XInclude-statements are executed. For more information on that have a look at the more detailed description

You can then load the holidays from your file using the createIteratorFromXmlFile-method.

If you think the XML-files might be usefull for others you should think about contributing back and open a PullRequest here or attach them to an issue you open.

We’d be very thankfull!