Nager.Date
Nager.Date copied to clipboard
Public Holiday Specification Class
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