Nager.Date icon indicating copy to clipboard operation
Nager.Date copied to clipboard

Public Holiday Specification Class

Open tinohager opened this issue 4 years ago • 0 comments

A proposal for discussion

The goal is to better display the moved holidays and also to minimize if statements in the code.

var weekendObservedRuleSet = new ObservedRuleSet
{
	Saturday = date => date.AddDays(-1),
	Sunday = date => date.AddDays(1),
};

var specifications = new PublicHolidaySpecification[]
{
	new PublicHolidaySpecification
	{
		Date = new DateTime(year, 12, 25),
		EnglishName = "New Year's Day",
		LocalName = "New Year's Day",
		ObservedRuleSet = weekendObservedRuleSet
	},
	new PublicHolidaySpecification
	{
		Date = thirdMondayInJanuary,
		EnglishName = "Martin Luther King, Jr. Day",
		LocalName = "Martin Luther King, Jr. Day",
	},
	new PublicHolidaySpecification
	{
		Date = thirdMondayInFebruary,
		EnglishName = "Washington's Birthday",
		LocalName = "Presidents Day",
	},
	new PublicHolidaySpecification
	{
		Date = lastMondayInMay,
		EnglishName = "Memorial Dayay",
		LocalName = "Memorial Day",
	},
	new PublicHolidaySpecification
	{
		Date = new DateTime(year, 12, 25),
		EnglishName = "Christmas Day",
		LocalName = "Christmas Day",
		ObservedRuleSet = weekendObservedRuleSet
	}
};

var specificationProcessor = new PublicHolidaySpecificationProcessor();
var items = specificationProcessor.Process(specifications, countryCode);

https://github.com/nager/Nager.Date/issues/360 https://github.com/nager/Nager.Date/issues/358 https://github.com/nager/Nager.Date/issues/214 https://github.com/nager/Nager.Date/issues/176

tinohager avatar Jan 31 '22 21:01 tinohager