/Nager.Date

C# Worldwide public holiday calculation. Please star (★) this project!

Primary LanguageC#MIT LicenseMIT

GitHub Release

Nager.Date

Nager.Date is a Date/Calendar Framework for .NET

  • Public holiday calculation for every year, based on easter sunday, country and county support. Supports over 90 countries.
  • Weekend information (supports 120 countries)
  • Age calculation

If your country is not supported, fork me, implement it and send me the pull request.

Website / API

https://date.nager.at

nuget

The package is available on nuget

PM> install-package Nager.Date

Donation possibilities

If this project help you reduce time to develop, you can give me a beer 🍺 Donate

Examples

Get all publicHolidays of a country and year

var publicHolidays = DateSystem.GetPublicHoliday("DE", 2017);
foreach (var publicHoliday in publicHolidays)
{
	//publicHoliday...
	//publicHoliday.Date -> The date
	//publicHoliday.LocalName -> The local name
	//publicHoliday.Name -> The english name
	//publicHoliday.Fixed -> Is this public holiday every year on the same date
	//publicHoliday.Global -> Is this public holiday in every county (federal state)
	//publicHoliday.Counties -> Is the public holiday only valid for a special county ISO-3166-2 - Federal states
	//publicHoliday.Type -> Public, Bank, School, Authorities, Optional, Observance
}

Get all publicHolidays for a date range

var startDate = new DateTime(2016, 5, 1);
var endDate = new DateTime(2018, 5, 31);
var publicHolidays = DateSystem.GetPublicHoliday(CountryCode.DE, startDate, endDate);
foreach (var publicHoliday in publicHolidays)
{
	//publicHoliday...
}

Check if a date is a public holiday

var date = new DateTime(2017, 1, 1);
if (DateSystem.IsPublicHoliday(date, CountryCode.DE))
{
	Console.WriteLine("Is public holiday");
}

Check if a date is a weekend day

var date = new DateTime(2017, 1, 1);
if (DateSystem.IsWeekend(date, CountryCode.DE))
{
	Console.WriteLine("Is weekend");
}

Calculate age

var date = new DateTime(1900, 1, 1);
var age = DateSystem.GetAge(date);

Country Support

The list of supported countries can be found on the wiki.

Areas of Application

  • telephone systems
  • carrier (land transport)
  • time recording

Blog Posts

Mark Seemann - Simple holidays

Alternative projects

Language Project Supported Countries (January 2019)
PHP yasumi 34
JavaScript date-holidays 142
Java jollyday 64
.NET Holiday 21
Python python-holidays 34
Python workalendar 59