Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 2 of Nager.Date #601

Merged
merged 144 commits into from
Mar 5, 2024
Merged
Changes from 1 commit
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
ffb0cea
optimize code structure
tinohager Feb 28, 2024
82e3605
remove long weekend logic
tinohager Feb 28, 2024
c61d1f5
change code structure
tinohager Feb 28, 2024
a42eba5
optimize code structure
tinohager Feb 28, 2024
3ec44b2
optimize code structure
tinohager Feb 28, 2024
c94c9ff
optimize code
tinohager Feb 28, 2024
ca5d90c
Optimize class naming, optimize code structure
tinohager Feb 28, 2024
02da96e
add logic documentation
tinohager Feb 28, 2024
ff9fcd6
optimize summary
tinohager Feb 29, 2024
e045fc4
optimize code structure
tinohager Feb 29, 2024
54ad7b9
Optimize ReligiousProviders
tinohager Feb 29, 2024
023e283
Start migrate first countries
tinohager Feb 29, 2024
3142c52
migrate countries
tinohager Mar 1, 2024
3827420
migrate countries
tinohager Mar 1, 2024
a81a0c5
migrate canada
tinohager Mar 1, 2024
9246c75
cleanup migration
tinohager Mar 1, 2024
e64fa5e
migrate chile
tinohager Mar 1, 2024
cb39132
migrate china
tinohager Mar 1, 2024
6529972
migrate Costa Rica
tinohager Mar 1, 2024
9ddb07c
migrate Croatia
tinohager Mar 1, 2024
d498325
migrate Cuba (wip)
tinohager Mar 1, 2024
2c1f7df
migrate Cuba
tinohager Mar 1, 2024
f3800bb
migrate Cyprus
tinohager Mar 1, 2024
ee75576
migrate Czech Republic
tinohager Mar 1, 2024
56fc37c
migrate Colombia
tinohager Mar 1, 2024
8135ba0
migrate Denmark
tinohager Mar 1, 2024
1ee735a
migrate Dominican Republic
tinohager Mar 1, 2024
4642d46
migrate Ecuador
tinohager Mar 1, 2024
803489c
migrate Egypt
tinohager Mar 1, 2024
1243c2d
migrate Estonia
tinohager Mar 1, 2024
8132afb
migrate Faroe Islands
tinohager Mar 1, 2024
432c401
migrate Finland
tinohager Mar 1, 2024
229a156
migrate France
tinohager Mar 1, 2024
336842e
migrate Gabon
tinohager Mar 1, 2024
3ba0490
migrate Gambia
tinohager Mar 1, 2024
81533d7
migrate Gibraltar
tinohager Mar 1, 2024
67eda7e
migrate Greece
tinohager Mar 1, 2024
58b5905
migrate Grenada
tinohager Mar 1, 2024
a2e6a26
migrate Guatemala
tinohager Mar 1, 2024
7c3c7bd
migrate Guernsey
tinohager Mar 1, 2024
4ebc89f
cleanup
tinohager Mar 1, 2024
3250ff8
migrate Guyana
tinohager Mar 1, 2024
cf14fba
migrate Haiti
tinohager Mar 1, 2024
7f513bf
migrate Honduras
tinohager Mar 1, 2024
d8cfa9a
migrate Hungary
tinohager Mar 1, 2024
d0b0cba
migrate Iceland
tinohager Mar 1, 2024
4b1ee26
migrate Indonesia
tinohager Mar 1, 2024
edcea59
migrate Ireland
tinohager Mar 1, 2024
9380061
cleanup code
tinohager Mar 1, 2024
5f0f762
Update IndonesiaHolidayProvider.cs
tinohager Mar 1, 2024
0e5c769
migrate Italy
tinohager Mar 2, 2024
4e85c79
migrate Jamaica
tinohager Mar 2, 2024
85d4876
Update JamaicaHolidayProvider.cs
tinohager Mar 2, 2024
6447d30
migrate Japan
tinohager Mar 2, 2024
e72c1e7
migrate Jersey
tinohager Mar 2, 2024
0fa75c6
migrate Latvia
tinohager Mar 2, 2024
2da6fc9
migrate Lesotho
tinohager Mar 2, 2024
ed3dd14
migrate Liechtenstein
tinohager Mar 2, 2024
f600e81
migrate Lithuania
tinohager Mar 2, 2024
7335633
migrate Luxembourg
tinohager Mar 2, 2024
2fb8fbf
migrate Macedonia
tinohager Mar 2, 2024
56928b6
migrate Madagascar
tinohager Mar 2, 2024
4380f3a
migrate Malta
tinohager Mar 2, 2024
e41ca63
migrate Mexico
tinohager Mar 2, 2024
0e2f1b6
migrate Moldova
tinohager Mar 2, 2024
e937cb2
migrate Panama
tinohager Mar 2, 2024
9ffae10
migrate Norway
tinohager Mar 2, 2024
bea8394
migrate Niger
tinohager Mar 2, 2024
cb8d847
migrate Nicaragua
tinohager Mar 2, 2024
c856df1
cleanup code
tinohager Mar 2, 2024
33bb44a
migrate Namibia
tinohager Mar 2, 2024
7ac2538
migrate Mozambique
tinohager Mar 2, 2024
28ee7a2
migrate Morocco
tinohager Mar 2, 2024
ae64802
migrate Mongolia
tinohager Mar 2, 2024
3490a7b
fix typo failure
tinohager Mar 2, 2024
8392c54
remove .net 6 support
tinohager Mar 2, 2024
3a13e81
migrate Slovakia
tinohager Mar 3, 2024
0cb8526
migrate Slovenia
tinohager Mar 3, 2024
778f575
migrate Svalbard and Jan Mayen
tinohager Mar 3, 2024
ff09110
migrate Tunisia
tinohager Mar 3, 2024
f117268
migrate Ukraine
tinohager Mar 3, 2024
868f3fa
migrate Uruguay
tinohager Mar 3, 2024
ee75a6a
migrate Vatican City
tinohager Mar 3, 2024
f087499
migrate Vietnam
tinohager Mar 3, 2024
29bb134
migrate Zimbabwe
tinohager Mar 3, 2024
09021bc
migrate Monaco
tinohager Mar 3, 2024
d4de23b
cleanup provider
tinohager Mar 3, 2024
0c0066e
migrate Netherlands
tinohager Mar 3, 2024
50d5f5d
migrate nigeria
tinohager Mar 3, 2024
882f8a5
migrate Papua New Guinea
tinohager Mar 3, 2024
5a576bf
migrate Paraguay
tinohager Mar 3, 2024
e09adcb
migrate Peru
tinohager Mar 3, 2024
638fb15
migrate Poland
tinohager Mar 3, 2024
2adc4dc
small code fix
tinohager Mar 3, 2024
97cea80
migrate Montenegro
tinohager Mar 3, 2024
5fb2b33
migrate Serbia
tinohager Mar 3, 2024
aa50606
migrate Romania
tinohager Mar 3, 2024
dd3ecca
migrate Sweden
tinohager Mar 3, 2024
a5c8d3e
optimize code
tinohager Mar 3, 2024
dc5ffff
migrate Montserrat
tinohager Mar 3, 2024
ce1e9e8
migrate South Africa
tinohager Mar 3, 2024
120693b
code cleanup
tinohager Mar 3, 2024
a6fe783
migrate Greenland
tinohager Mar 4, 2024
1249b11
migrate San Marino
tinohager Mar 4, 2024
c0b2a1b
migrate Puerto Rico
tinohager Mar 4, 2024
1b3fa4d
cleanup code
tinohager Mar 4, 2024
89dff98
migrate Portugal
tinohager Mar 4, 2024
9550eef
migrate Suriname
tinohager Mar 4, 2024
95fd557
migrate New Zealand
tinohager Mar 4, 2024
2ecf429
migrate Singapore
tinohager Mar 4, 2024
35df3b5
cleanup code
tinohager Mar 4, 2024
cc894a0
migrate Russia
tinohager Mar 4, 2024
1ff8713
migrate Venezuela
tinohager Mar 4, 2024
cbb30c0
migrate El Salvador
tinohager Mar 4, 2024
936e49b
migrate Isle of Man
tinohager Mar 4, 2024
fe6667a
migrate Turkey
tinohager Mar 4, 2024
588f574
migrate Switzerland
tinohager Mar 4, 2024
2b44804
optimize naming
tinohager Mar 4, 2024
5a0cfb0
migrate United States of America
tinohager Mar 4, 2024
438ccf6
migrate Germany
tinohager Mar 4, 2024
8469e3d
cleanup code
tinohager Mar 4, 2024
29604b3
optimize religious providers
tinohager Mar 4, 2024
3f0d6d6
optimize console app
tinohager Mar 4, 2024
8986ac6
migrate spain
tinohager Mar 4, 2024
3cf485c
migrate United Kingdom
tinohager Mar 4, 2024
5deb5a1
switch unit tests to observedDate
tinohager Mar 4, 2024
d64ba36
code cleanup
tinohager Mar 4, 2024
fec34de
migrate South Korea
tinohager Mar 4, 2024
59095f5
cleanup code
tinohager Mar 4, 2024
e5b723a
code cleanup
tinohager Mar 4, 2024
a90e016
change naming
tinohager Mar 4, 2024
e848873
cleanup code
tinohager Mar 4, 2024
abd65ad
optimize code
tinohager Mar 4, 2024
6cf70f1
optimize readmes
tinohager Mar 4, 2024
1c11012
optimize readmes
tinohager Mar 4, 2024
3ac6224
Update Nager.Date.csproj
tinohager Mar 4, 2024
7ef729d
fix some small issues
tinohager Mar 5, 2024
5fcfbd0
fix naming
tinohager Mar 5, 2024
b9c951c
move date search logic to helper class
tinohager Mar 5, 2024
1016729
optimize code
tinohager Mar 5, 2024
f7e2b43
update changelog
tinohager Mar 5, 2024
18e5c99
Split DateSystem logic
tinohager Mar 5, 2024
c45bccd
fix build logic
tinohager Mar 5, 2024
8db6994
small fixes
tinohager Mar 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
migrate United Kingdom
  • Loading branch information
tinohager committed Mar 4, 2024
commit 3cf485c7e4a87341abda721c79611e3036f84f7e
280 changes: 229 additions & 51 deletions src/Nager.Date/HolidayProviders/UnitedKingdomHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,132 +44,310 @@ public IEnumerable<Holiday> GetHolidays(int year)
var firstMondayInAugust = DateSystem.FindDay(year, Month.August, DayOfWeek.Monday, Occurrence.First);
var lastMondayInAugust = DateSystem.FindLastDay(year, Month.August, DayOfWeek.Monday);

var items = new List<Holiday>();
var mondayObservedRuleSet = new ObservedRuleSet
{
Saturday = date => date.AddDays(2),
Sunday = date => date.AddDays(1),
};

#region New Year's Day with fallback
var monday1ObservedRuleSet = new ObservedRuleSet
{
Sunday = date => date.AddDays(2),
Monday = date => date.AddDays(1),
};

var newYearDay = new DateTime(year, 1, 1);
if (newYearDay.IsWeekend(countryCode))
var observedRuleSet2 = new ObservedRuleSet
{
var newYearDayMonday = DateSystem.FindDay(year, Month.January, 1, DayOfWeek.Monday);
var newYearDayTuesday = DateSystem.FindDay(year, Month.January, 1, DayOfWeek.Tuesday);
Saturday = date => date.AddDays(2),
Sunday = date => date.AddDays(2),
};

items.Add(new Holiday(newYearDay, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-NIR" }));
items.Add(new Holiday(newYearDayMonday, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-ENG", "GB-WLS" }));
items.Add(new Holiday(newYearDayTuesday, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-SCT" }));
}
else
var holidaySpecifications = new List<HolidaySpecification>
{
items.Add(new Holiday(newYearDay, "New Year's Day", "New Year's Day", countryCode));
}
new HolidaySpecification
{
Date = new DateTime(year, 1, 1),
EnglishName = "New Year's Day",
LocalName = "New Year's Day",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-NIR"]
},
new HolidaySpecification
{
Date = new DateTime(year, 1, 1),
EnglishName = "New Year's Day",
LocalName = "New Year's Day",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-ENG", "GB-WLS"],
ObservedRuleSet = mondayObservedRuleSet
},
new HolidaySpecification
{
Date = new DateTime(year, 1, 1),
EnglishName = "New Year's Day",
LocalName = "New Year's Day",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-SCT"],
ObservedRuleSet = mondayObservedRuleSet
},
new HolidaySpecification
{
Date = new DateTime(year, 1, 2),
EnglishName = "New Year's Day",
LocalName = "New Year's Day",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-SCT"],
ObservedRuleSet = monday1ObservedRuleSet
},
new HolidaySpecification
{
Date = new DateTime(year, 3, 17),
EnglishName = "Saint Patrick's Day",
LocalName = "Saint Patrick's Day",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-NIR"]
},
new HolidaySpecification
{
Date = new DateTime(year, 11, 30),
EnglishName = "Saint Andrew's Day",
LocalName = "Saint Andrew's Day",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-SCT"]
},
new HolidaySpecification
{
Date = new DateTime(year, 7, 12),
EnglishName = "Battle of the Boyne",
LocalName = "Battle of the Boyne",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-NIR"]
},
new HolidaySpecification
{
Date = firstMondayInAugust,
EnglishName = "Summer Bank Holiday",
LocalName = "Summer Bank Holiday",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-SCT"]
},
new HolidaySpecification
{
Date = lastMondayInAugust,
EnglishName = "Summer Bank Holiday",
LocalName = "Summer Bank Holiday",
HolidayTypes = HolidayTypes.Public,
SubdivisionCodes = ["GB-ENG", "GB-WLS", "GB-NIR"]
},
new HolidaySpecification
{
Date = new DateTime(year, 12, 25),
EnglishName = "Christmas Day",
LocalName = "Christmas Day",
HolidayTypes = HolidayTypes.Public,
ObservedRuleSet = observedRuleSet2
},
new HolidaySpecification
{
Date = new DateTime(year, 12, 26),
EnglishName = "St. Stephen's Day",
LocalName = "Boxing Day",
HolidayTypes = HolidayTypes.Public,
ObservedRuleSet = observedRuleSet2
},
this._catholicProvider.GoodFriday("Good Friday", year),
this._catholicProvider.EasterMonday("Easter Monday", year).SetSubdivisionCodes("GB-ENG", "GB-WLS", "GB-NIR")
};

holidaySpecifications.AddIfNotNull(this.EarlyMayBankHoliday(year));
holidaySpecifications.AddIfNotNull(this.SpringBankHoliday(year));
holidaySpecifications.AddIfNotNull(this.QueensPlatinumJubilee(year));
holidaySpecifications.AddIfNotNull(this.QueensStateFuneral(year));
holidaySpecifications.AddIfNotNull(this.CoronationBankHoliday(year));

#endregion
var holidays = HolidaySpecificationProcessor.Process(holidaySpecifications, countryCode);
return holidays.OrderBy(o => o.Date);

#region New Year's Day 2 with fallback

var newYearDay2 = new DateTime(year, 1, 2).Shift(saturday => saturday.AddDays(2), sunday => sunday.AddDays(1));
items.Add(new Holiday(newYearDay2, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-SCT" }));
//var items = new List<Holiday>();

#endregion
//#region New Year's Day with fallback

items.Add(new Holiday(year, 3, 17, "Saint Patrick's Day", "Saint Patrick's Day", countryCode, null, new string[] { "GB-NIR" }));
items.Add(this._catholicProvider.GoodFriday("Good Friday", year, countryCode));
items.Add(this._catholicProvider.EasterMonday("Easter Monday", year, countryCode).SetCounties("GB-ENG", "GB-WLS", "GB-NIR"));
items.Add(new Holiday(year, 11, 30, "Saint Andrew's Day", "Saint Andrew's Day", countryCode, null, new string[] { "GB-SCT" }));
items.Add(new Holiday(year, 7, 12, "Battle of the Boyne", "Battle of the Boyne", countryCode, null, new string[] { "GB-NIR" }));
items.Add(new Holiday(firstMondayInAugust, "Summer Bank Holiday", "Summer Bank Holiday", countryCode, 1971, new string[] { "GB-SCT" }));
items.Add(new Holiday(lastMondayInAugust, "Summer Bank Holiday", "Summer Bank Holiday", countryCode, 1971, new string[] { "GB-ENG", "GB-WLS", "GB-NIR" }));
//var newYearDay = new DateTime(year, 1, 1);
//if (newYearDay.IsWeekend(countryCode))
//{
// var newYearDayMonday = DateSystem.FindDay(year, Month.January, 1, DayOfWeek.Monday);
// var newYearDayTuesday = DateSystem.FindDay(year, Month.January, 1, DayOfWeek.Tuesday);

// items.Add(new Holiday(newYearDay, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-NIR" }));
// items.Add(new Holiday(newYearDayMonday, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-ENG", "GB-WLS" }));
// items.Add(new Holiday(newYearDayTuesday, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-SCT" }));
//}
//else
//{
// items.Add(new Holiday(newYearDay, "New Year's Day", "New Year's Day", countryCode));
//}

items.AddIfNotNull(this.EarlyMayBankHoliday(year, countryCode));
items.AddIfNotNull(this.SpringBankHoliday(year, countryCode));
items.AddIfNotNull(this.QueensPlatinumJubilee(year, countryCode));
items.AddIfNotNull(this.QueensStateFuneral(year, countryCode));
items.AddIfNotNull(this.CoronationBankHoliday(year, countryCode));
//#endregion

#region Christmas Day with fallback
//#region New Year's Day 2 with fallback

var christmasDay = new DateTime(year, 12, 25).Shift(saturday => saturday.AddDays(2), sunday => sunday.AddDays(2));
items.Add(new Holiday(christmasDay, "Christmas Day", "Christmas Day", countryCode));
//var newYearDay2 = new DateTime(year, 1, 2).Shift(saturday => saturday.AddDays(2), sunday => sunday.AddDays(1));
//items.Add(new Holiday(newYearDay2, "New Year's Day", "New Year's Day", countryCode, null, new string[] { "GB-SCT" }));

#endregion
//#endregion

#region St. Stephen's Day with fallback
//items.Add(new Holiday(year, 3, 17, "Saint Patrick's Day", "Saint Patrick's Day", countryCode, null, new string[] { "GB-NIR" }));
//items.Add(this._catholicProvider.GoodFriday("Good Friday", year, countryCode));
//items.Add(this._catholicProvider.EasterMonday("Easter Monday", year, countryCode).SetCounties("GB-ENG", "GB-WLS", "GB-NIR"));
//items.Add(new Holiday(year, 11, 30, "Saint Andrew's Day", "Saint Andrew's Day", countryCode, null, new string[] { "GB-SCT" }));
//items.Add(new Holiday(year, 7, 12, "Battle of the Boyne", "Battle of the Boyne", countryCode, null, new string[] { "GB-NIR" }));
//items.Add(new Holiday(firstMondayInAugust, "Summer Bank Holiday", "Summer Bank Holiday", countryCode, 1971, new string[] { "GB-SCT" }));
//items.Add(new Holiday(lastMondayInAugust, "Summer Bank Holiday", "Summer Bank Holiday", countryCode, 1971, new string[] { "GB-ENG", "GB-WLS", "GB-NIR" }));

var sanktStehpenDay = new DateTime(year, 12, 26).Shift(saturday => saturday.AddDays(2), sunday => sunday.AddDays(2));
items.Add(new Holiday(sanktStehpenDay, "Boxing Day", "St. Stephen's Day", countryCode));

#endregion
//items.AddIfNotNull(this.EarlyMayBankHoliday(year, countryCode));
//items.AddIfNotNull(this.SpringBankHoliday(year, countryCode));
//items.AddIfNotNull(this.QueensPlatinumJubilee(year, countryCode));
//items.AddIfNotNull(this.QueensStateFuneral(year, countryCode));
//items.AddIfNotNull(this.CoronationBankHoliday(year, countryCode));

return items.OrderBy(o => o.Date);
//var christmasDay = new DateTime(year, 12, 25).Shift(saturday => saturday.AddDays(2), sunday => sunday.AddDays(2));
//var sanktStehpenDay = new DateTime(year, 12, 26).Shift(saturday => saturday.AddDays(2), sunday => sunday.AddDays(2));
//items.Add(new Holiday(christmasDay, "Christmas Day", "Christmas Day", countryCode));
//items.Add(new Holiday(sanktStehpenDay, "Boxing Day", "St. Stephen's Day", countryCode));

//return items.OrderBy(o => o.Date);
}

private Holiday SpringBankHoliday(int year, CountryCode countryCode)
private HolidaySpecification SpringBankHoliday(int year)
{
var name = "Spring Bank Holiday";

if (year == 2022)
{
//https://www.gov.uk/government/news/extra-bank-holiday-to-mark-the-queens-platinum-jubilee-in-2022
return new Holiday(year, 6, 2, name, name, countryCode);

return new HolidaySpecification
{
Date = new DateTime(year, 6, 2),
EnglishName = name,
LocalName = name,
HolidayTypes = HolidayTypes.Public
};

//return new Holiday(year, 6, 2, name, name, countryCode);
}

var lastMondayInMay = DateSystem.FindLastDay(year, Month.May, DayOfWeek.Monday);
return new Holiday(lastMondayInMay, name, name, countryCode, 1971);

return new HolidaySpecification
{
Date = lastMondayInMay,
EnglishName = name,
LocalName = name,
HolidayTypes = HolidayTypes.Public
};

//return new Holiday(lastMondayInMay, name, name, countryCode, 1971);
}

#region Royal family

private Holiday QueensPlatinumJubilee(int year, CountryCode countryCode)
private HolidaySpecification QueensPlatinumJubilee(int year)
{
if (year == 2022)
{
//Majesty Queen Elizabeth II’s
return new Holiday(year, 6, 3, "Queen’s Platinum Jubilee", "Queen’s Platinum Jubilee", countryCode);

return new HolidaySpecification
{
Date = new DateTime(year, 6, 3),
EnglishName = "Queen’s Platinum Jubilee",
LocalName = "Queen’s Platinum Jubilee",
HolidayTypes = HolidayTypes.Public
};

//return new Holiday(year, 6, 3, "Queen’s Platinum Jubilee", "Queen’s Platinum Jubilee", countryCode);
}

return null;
}

private Holiday QueensStateFuneral(int year, CountryCode countryCode)
private HolidaySpecification QueensStateFuneral(int year)
{
if (year == 2022)
{
//Majesty Queen Elizabeth II’s (https://www.gov.uk/government/news/bank-holiday-announced-for-her-majesty-queen-elizabeth-iis-state-funeral-on-monday-19-september)
return new Holiday(year, 9, 19, "Queen’s State Funeral", "Queen’s State Funeral", countryCode);

return new HolidaySpecification
{
Date = new DateTime(year, 9, 19),
EnglishName = "Queen’s State Funeral",
LocalName = "Queen’s State Funeral",
HolidayTypes = HolidayTypes.Public
};

//return new Holiday(year, 9, 19, "Queen’s State Funeral", "Queen’s State Funeral", countryCode);
}

return null;
}

private Holiday CoronationBankHoliday(int year, CountryCode countryCode)
private HolidaySpecification CoronationBankHoliday(int year)
{
if (year == 2023)
{
//Bank holiday proclaimed in honour of the coronation of His Majesty King Charles III
//https://www.gov.uk/government/news/bank-holiday-proclaimed-in-honour-of-the-coronation-of-his-majesty-king-charles-iii

return new Holiday(year, 5, 8, "Coronation Bank Holiday", "Coronation Bank Holiday", countryCode);
return new HolidaySpecification
{
Date = new DateTime(year, 5, 8),
EnglishName = "Coronation Bank Holiday",
LocalName = "Coronation Bank Holiday",
HolidayTypes = HolidayTypes.Public
};

//return new Holiday(year, 5, 8, "Coronation Bank Holiday", "Coronation Bank Holiday", countryCode);
}

return null;
}

#endregion

private Holiday EarlyMayBankHoliday(int year, CountryCode countryCode)
private HolidaySpecification EarlyMayBankHoliday(int year)
{
var holidayName = "Early May Bank Holiday";

if (year == 2020)
{
//https://www.bbc.co.uk/news/uk-48565417
var secondFridayInMay = DateSystem.FindDay(year, Month.May, DayOfWeek.Friday, Occurrence.Second);
return new Holiday(secondFridayInMay, holidayName, holidayName, countryCode, 1978);

return new HolidaySpecification
{
Date = secondFridayInMay,
EnglishName = holidayName,
LocalName = holidayName,
HolidayTypes = HolidayTypes.Public
};

//return new Holiday(secondFridayInMay, holidayName, holidayName, countryCode, 1978);
}

var firstMondayInMay = DateSystem.FindDay(year, Month.May, DayOfWeek.Monday, Occurrence.First);
return new Holiday(firstMondayInMay, holidayName, holidayName, countryCode, 1978);

return new HolidaySpecification
{
Date = firstMondayInMay,
EnglishName = holidayName,
LocalName = holidayName,
HolidayTypes = HolidayTypes.Public
};

//return new Holiday(firstMondayInMay, holidayName, holidayName, countryCode, 1978);
}

/// <inheritdoc/>
Expand Down
Loading