Skip to content

Commit

Permalink
Australia - Add Friday before AFL Grand Final (#684)
Browse files Browse the repository at this point in the history
  • Loading branch information
tinohager authored Sep 25, 2024
1 parent 1fbd845 commit a96d816
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions src/Nager.Date/HolidayProviders/AustraliaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ protected override IEnumerable<HolidaySpecification> GetHolidaySpecifications(in
holidaySpecifications.AddRangeIfNotNull(this.LabourDay(year));
holidaySpecifications.AddRangeIfNotNull(this.MonarchBirthday(year));
holidaySpecifications.AddIfNotNull(this.MourningForQueenElizabeth(year));
holidaySpecifications.AddIfNotNull(this.FridayBeforeTheAflGrandFinal(year));

return holidaySpecifications;
}
Expand Down Expand Up @@ -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;
}

/// <inheritdoc/>
public override IEnumerable<string> GetSources()
{
Expand Down

0 comments on commit a96d816

Please sign in to comment.