Skip to content

An offline database with APIs to check if a given date is on a public holiday for a given region.

License

Notifications You must be signed in to change notification settings

FlineDev/PublicHolidays

Repository files navigation

CI Version: 0.1.0 SwiftPM: Compatible License: MIT
PayPal: Donate GitHub: Become a sponsor Patreon: Become a patron

UsageDonationIssuesContributingLicense

PublicHolidays

An offline database with APIs to check if a given date is on a public holiday for a given region.

Contains public holidays of over 100 countries from start of 2020 to end of 2029.

Usage

This library basically has just two main functions and two supporting functions.

Here's how to use the main functions:

// First main function returns list of public holidays for a given location:
try PublicHolidays.all(countryCode: "US")
// => [PublicHoliday(localName: "New Year's Day", date: "2020-01-01"), ...]

try PublicHolidays.all(countryCode: "US", subTerritoryCode: "DC")
// => [PublicHoliday(localName: "New Year's Day", date: "2020-01-01"), ...]


// Second main checks if a given date is on a public holiday for a given location:
try PublicHolidays.contains(date: Date(), country: "FR")
// => true/false

try PublicHolidays.contains(date: Date(), country: "GB", subTerritoryCode: "ENG")
// => true/false

Note that subTerritoryCode is optional and has a default value of nil. Each PublicHoliday consists of a localName: String and a date: Date. Technically speaking, you can also specify a custom timeZone to use when loading the public holidays, but it is discouraged to do that unless you really know what you're doing. By default, the calculation will be using the current time zone of the device so passing a timeZone shouldn't be necessary in most cases.

If you provide a countryCode or a subTerritoryCode for which no data is available in this library, the method will throw an error. To prevent this, there are two supporting functions that tell you for which data is available:

PublicHolidays.availableCountries() // => ["US", "DE", "JP", "FR", ...]
try PublicHolidays.availableSubTerritories(countryCode: "GB") // => ["ENG", "NIR", "SCT", "WLS"]

Donation

PublicHolidays was brought to you by Cihat Gündüz in his free time. If you want to thank me and support the development of this project, please make a small donation on PayPal. In case you also like my other open source contributions and articles, please consider motivating me by becoming a sponsor on GitHub or a patron on Patreon.

Thank you very much for any donation, it really helps out a lot! 💯

Contributing

Contributions are welcome. Feel free to open an issue on GitHub with your ideas or implement an idea yourself and post a pull request. If you want to contribute code, please try to follow the same syntax and semantic in your commit messages (see rationale here). Also, please make sure to add an entry to the CHANGELOG.md file which explains your change.

Development Tips

To update the public holidays data JSON files from nager.date API, run this command from project root:

swift build && .build/x86_64-apple-macosx/debug/PublicHolidaysUpdater

It is recommended that you configure git hooks so that lint checks are automatically executed & Linux tests generated before any commit. We prepared a script to set this up for you (run once per project):

./pre-commit.sh

License

This library is released under the MIT License. See LICENSE for details.

About

An offline database with APIs to check if a given date is on a public holiday for a given region.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published