From a96d8167965ee8eb8cb2b29eff550ba5996eba41 Mon Sep 17 00:00:00 2001 From: Tino Hager Date: Wed, 25 Sep 2024 14:09:08 +0200 Subject: [PATCH] Australia - Add Friday before AFL Grand Final (#684) https://github.com/nager/Nager.Date/issues/565 https://github.com/nager/Nager.Date/issues/681 --- .../AustraliaHolidayProvider.cs | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/Nager.Date/HolidayProviders/AustraliaHolidayProvider.cs b/src/Nager.Date/HolidayProviders/AustraliaHolidayProvider.cs index c140319a..dcc74bc7 100644 --- a/src/Nager.Date/HolidayProviders/AustraliaHolidayProvider.cs +++ b/src/Nager.Date/HolidayProviders/AustraliaHolidayProvider.cs @@ -190,6 +190,7 @@ protected override IEnumerable GetHolidaySpecifications(in holidaySpecifications.AddRangeIfNotNull(this.LabourDay(year)); holidaySpecifications.AddRangeIfNotNull(this.MonarchBirthday(year)); holidaySpecifications.AddIfNotNull(this.MourningForQueenElizabeth(year)); + holidaySpecifications.AddIfNotNull(this.FridayBeforeTheAflGrandFinal(year)); return holidaySpecifications; } @@ -308,6 +309,68 @@ private HolidaySpecification[] MonarchBirthday(int year) return null; } + private HolidaySpecification? FridayBeforeTheAflGrandFinal(int year) + { + var holidayName = "Friday before AFL Grand Final"; + var subdivisionCodes = new string[] { "AU-VIC" }; + + switch (year) + { + case 2016: + case 2017: + case 2018: + case 2019: + case 2021: + case 2023: + { + var lastFridayInSeptember = DateHelper.FindLastDay(year, Month.September, DayOfWeek.Friday); + + return new HolidaySpecification + { + Date = lastFridayInSeptember, + EnglishName = holidayName, + LocalName = holidayName, + HolidayTypes = HolidayTypes.Public, + SubdivisionCodes = subdivisionCodes + }; + } + case 2020: + return new HolidaySpecification + { + Date = new DateTime(year, 10 , 23), + EnglishName = holidayName, + LocalName = holidayName, + HolidayTypes = HolidayTypes.Public, + SubdivisionCodes = subdivisionCodes + }; + case 2022: + return new HolidaySpecification + { + Date = new DateTime(year, 09, 23), + EnglishName = holidayName, + LocalName = holidayName, + HolidayTypes = HolidayTypes.Public, + SubdivisionCodes = subdivisionCodes + }; + } + + if (year > DateTime.Today.Year) + { + var tentativeDate = DateHelper.FindLastDay(year, Month.September, DayOfWeek.Friday); + + return new HolidaySpecification + { + Date = tentativeDate, + EnglishName = $"{holidayName} (Tentative Date)", + LocalName = $"{holidayName} (Tentative Date)", + HolidayTypes = HolidayTypes.Public, + SubdivisionCodes = subdivisionCodes + }; + } + + return null; + } + /// public override IEnumerable GetSources() {