.net library retrieving public holiday dates in Australia.
See Milestones for release notes.
The holiday dates provided are based on best efforts to ensure accuracy. However, dates are not guarantee to be correct or up-to-date. Consumers should verify the holiday dates with official sources before relying on them for any critical purposes. The authors and contributors of this project are not responsible for any inaccuracies or any consequences arising from the use of this information.
- Australian Capital Territory
- New South Wales
- Northern Territory
- Queensland
- South Australia
- Tasmania
- Victoria
- Western Australia
When public holidays fall on weekends, Australian states and territories have different rules about whether a substitute weekday holiday is provided. This section documents these substitution rules for all major public holidays.
New South Wales - Additional day when on weekend
- When 1st January falls on a weekday → observed on 1st January
- When 1st January falls on Saturday → Both Saturday (1st January) and Monday (3rd January) are public holidays
- When 1st January falls on Sunday → Both Sunday (1st January) and Monday (2nd January) are public holidays
- Important: This is additional, not substitution - both the actual 1st January date AND the Monday are public holidays
All Other States
- New Year's Day is always observed on 1 January, regardless of the day of the week
- No substitute holidays are provided when it falls on a weekend
All States and Territories - Substitution (Monday replaces weekend day)
- When 26th January falls on a weekday → observed on 26th January
- When 26th January falls on Saturday → Only Monday (28th January) is a public holiday, labeled "Australia Day (observed)"
- When 26th January falls on Sunday → Only Monday (27th January) is a public holiday, labeled "Australia Day (observed)"
- Important: This is substitution, not additional - the actual 26 January date is NOT a public holiday when it falls on a weekend, only the Monday substitute counts
- This is consistent across all Australian states and territories
ANZAC Day is observed on 25th April each year. When 25th April falls on a weekend (Saturday or Sunday), some Australian states and territories provide an additional public holiday on the following Monday.
Important: The Monday is an "additional" holiday, not a "substitution" - both the actual 25th April and the Monday are public holidays. The Monday provides workers with an extra day off since the actual ANZAC Day fell on a non-working day.
Western Australia - Both Saturday and Sunday
- When ANZAC Day falls on Saturday (25th April) → Monday (27th April) is "Anzac Day (additional)"
- When ANZAC Day falls on Sunday (25th April) → Monday (26th April) is "Anzac Day (additional)"
- Established: 1972 via Public and Bank Holidays Act 1972
Queensland - Sunday only
- When ANZAC Day falls on Sunday (25th April) → Monday (26th April) is "Anzac Day (additional)"
- No substitute when ANZAC Day falls on Saturday
- Established: Holidays Act 1983
New South Wales - Both Saturday and Sunday
- When ANZAC Day falls on Saturday (25th April) → Monday (27th April) is "Anzac Day (additional)"
- When ANZAC Day falls on Sunday (25th April) → Monday (26th April) is "Anzac Day (additional)"
- Established: 2026
Australian Capital Territory - Both Saturday and Sunday
- When ANZAC Day falls on Saturday (25th April) → Monday (27th April) is "Anzac Day (additional)"
- When ANZAC Day falls on Sunday (25th April) → Monday (26th April) is "Anzac Day (additional)"
- Established: Approximately 2020, confirmed for 2026
Northern Territory - Sunday only
- When ANZAC Day falls on Sunday (25th April) → Monday (26th April) is "Anzac Day (additional)"
- No substitute when ANZAC Day falls on Saturday
ANZAC Day is always observed on 25th April, regardless of the day of the week. No additional Monday holiday is provided when 25th April falls on a weekend.
- Victoria
- Tasmania
- South Australia
Most States (NSW, VIC, TAS, WA, ACT, QLD, NT)
- Christmas Day (25 December) and Boxing Day (26th December) are always observed on their actual dates
- When either or both fall on a weekend, additional weekday holidays are provided:
- If only one falls on weekend → One "Christmas (additional)" on the next weekday after Boxing Day
- If both fall on weekend (Sat/Sun) → Two "Christmas (additional)" days on the following Monday and Tuesday
- Examples:
- 2026: Christmas Friday, Boxing Day Saturday → Monday 28th December is "Christmas (additional)"
- 2027: Christmas Saturday, Boxing Day Sunday → Monday 27th December and Tuesday 28th December are both "Christmas (additional)"
South Australia - Special "Proclamation Day" rules
- 25th December is always "Christmas Day"
- 26th December is called "Proclamation Day" (instead of Boxing Day)
- Substitution rules:
- If 26th December is a weekday → "Proclamation and Boxing Day"
- If 26th December is Saturday → "Proclamation Day" + Monday 28th December "Proclamation Day (additional)"
- If 26th December is Sunday → "Proclamation Day" + Monday 27th December "Proclamation Day (additional)"
- Note: Only one additional day even when Christmas is also on weekend
The main entry point is AustralianHolidays.Holidays
Determines if a given date is a public holiday in a specified Australian state.
var date = new Date(2024, 12, 25);
IsTrue(date.IsHoliday(State.NSW));Determines if a specific date is a recognized public holiday in a specified state and retrieving the name of the holiday if it is.
var date = new Date(2024, 12, 25);
IsTrue(date.IsHoliday(State.NSW, out var name));
AreEqual("Christmas Day", name);The same as IsHoliday but a convenience wrapper named method is provided for each state.
var date = new Date(2024, 12, 25);
IsTrue(date.IsNswHoliday());The same as IsHoliday with name but a convenience wrapper named method is provided for each state.
var date = new Date(2024, 12, 25);
IsTrue(date.IsNswHoliday(out var name));
AreEqual("Christmas Day", name);Retrieves public holidays for all states over a specified range of years.
var holidays = Holidays.ForYears(startYear: 2025, yearCount: 2);
foreach (var (date, state, name) in holidays)
{
Console.WriteLine($"date: {date}, state: {state}, name: {name}");
}Retrieves public holidays for a specified state over a given range of years.
var holidays = Holidays.ForYears(State.NSW, startYear: 2025, yearCount: 2);
foreach (var (date, name) in holidays)
{
Console.WriteLine($"date: {date}, name: {name}");
}Gets federal holidays that are common for all states.
var holidays = Holidays.ForNational(2025);
foreach (var (date, name) in holidays)
{
Console.WriteLine($"date: {date}, name: {name}");
}var holidays = Holidays.ForNsw(2025);
foreach (var (date, name) in holidays)
{
Console.WriteLine($"date: {date}, name: {name}");
}var date = new Date(2025, 12, 30);
var result = date.IsFederalGovernmentShutdown();
IsTrue(result);var (start, end) = Holidays.GetFederalGovernmentShutdown(startYear: 2024);
AreEqual(new Date(2024, 12, 25), start);
AreEqual(new Date(2025, 1, 1), end);var md = await Holidays.ExportToMarkdown();Common holidays for all states
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| Anzac Day (additional) |
Mon 27 Apr |
||||
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
var md = await Holidays.ExportToMarkdown(state);Australian Capital Territory (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (not holiday) |
Sat 26 Jan |
||||
| Australia Day (observed) |
Mon 28 Jan |
||||
| Canberra Day | Mon 09 Mar |
Mon 08 Mar |
Mon 13 Mar |
Mon 12 Mar |
Mon 11 Mar |
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| Anzac Day (additional) |
Mon 27 Apr |
Mon 26 Apr |
|||
| Reconciliation Day | Mon 01 Jun |
Mon 31 May |
Mon 29 May |
Mon 28 May |
Mon 27 May |
| King's Birthday | Mon 08 Jun |
Mon 14 Jun |
Mon 12 Jun |
Mon 11 Jun |
Mon 10 Jun |
| Labour Day | Mon 05 Oct |
Mon 04 Oct |
Mon 02 Oct |
Mon 01 Oct |
Mon 07 Oct |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
New South Wales (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| New Year's Day (additional) |
Mon 03 Jan |
||||
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| Anzac Day (additional) |
Mon 27 Apr |
Mon 26 Apr |
|||
| King's Birthday | Mon 08 Jun |
Mon 14 Jun |
Mon 12 Jun |
Mon 11 Jun |
Mon 10 Jun |
| Bank Holiday | Mon 03 Aug |
Mon 02 Aug |
Mon 07 Aug |
Mon 06 Aug |
Mon 05 Aug |
| Labour Day | Mon 05 Oct |
Mon 04 Oct |
Mon 02 Oct |
Mon 01 Oct |
Mon 07 Oct |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
Northern Territory (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| Anzac Day (additional) |
Mon 26 Apr |
||||
| May Day | Mon 04 May |
Mon 03 May |
Mon 01 May |
Mon 07 May |
Mon 06 May |
| King's Birthday | Mon 08 Jun |
Mon 14 Jun |
Mon 12 Jun |
Mon 11 Jun |
Mon 10 Jun |
| Picnic Day | Mon 03 Aug |
Mon 02 Aug |
Mon 07 Aug |
Mon 06 Aug |
Mon 05 Aug |
| Christmas Eve (partial day) |
Thu 24 Dec |
Fri 24 Dec |
Sun 24 Dec |
Mon 24 Dec |
Tue 24 Dec |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
|||
| New Year's Eve (partial day) |
Thu 31 Dec |
Fri 31 Dec |
Sun 31 Dec |
Mon 31 Dec |
Tue 31 Dec |
Queensland (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| Anzac Day (additional) |
Mon 26 Apr |
||||
| Labour Day | Mon 04 May |
Mon 03 May |
Mon 01 May |
Mon 07 May |
Mon 06 May |
| King's Birthday | Mon 05 Oct |
Mon 04 Oct |
Mon 02 Oct |
Mon 01 Oct |
Mon 07 Oct |
| Christmas Eve (partial day) |
Thu 24 Dec |
Fri 24 Dec |
Sun 24 Dec |
Mon 24 Dec |
Tue 24 Dec |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
South Australia (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Adelaide Cup Day | Mon 09 Mar |
Mon 08 Mar |
Mon 13 Mar |
Mon 12 Mar |
Mon 11 Mar |
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| King's Birthday | Mon 08 Jun |
Mon 14 Jun |
Mon 12 Jun |
Mon 11 Jun |
Mon 10 Jun |
| Labour Day | Mon 05 Oct |
Mon 04 Oct |
Mon 02 Oct |
Mon 01 Oct |
Mon 07 Oct |
| Christmas Eve (partial day) |
Thu 24 Dec |
Fri 24 Dec |
Sun 24 Dec |
Mon 24 Dec |
Tue 24 Dec |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Proclamation Day | Sat 26 Dec |
Sun 26 Dec |
|||
| Proclamation and Boxing Day | Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
||
| Proclamation Day (additional) |
Mon 28 Dec |
Mon 27 Dec |
|||
| New Year's Eve (partial day) |
Thu 31 Dec |
Fri 31 Dec |
Sun 31 Dec |
Mon 31 Dec |
Tue 31 Dec |
Tasmania (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Eight Hours Day | Mon 09 Mar |
Mon 08 Mar |
Mon 13 Mar |
Mon 12 Mar |
Mon 11 Mar |
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Easter Tuesday (Government employees only) |
Tue 07 Apr |
Tue 30 Mar |
Tue 18 Apr |
Tue 03 Apr |
Tue 23 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| King's Birthday | Mon 08 Jun |
Mon 14 Jun |
Mon 12 Jun |
Mon 11 Jun |
Mon 10 Jun |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
Victorian (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Labour Day | Mon 09 Mar |
Mon 08 Mar |
Mon 13 Mar |
Mon 12 Mar |
Mon 11 Mar |
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| King's Birthday | Mon 08 Jun |
Mon 14 Jun |
Mon 12 Jun |
Mon 11 Jun |
Mon 10 Jun |
| Friday before AFL Final (Subject to AFL schedule) |
Fri 25 Sep |
Fri 24 Sep |
Fri 29 Sep |
Fri 28 Sep |
Fri 27 Sep |
| Melbourne Cup Day | Tue 03 Nov |
Tue 02 Nov |
Tue 07 Nov |
Tue 06 Nov |
Tue 05 Nov |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
Western Australia (Reference)
| 2026 | 2027 | 2028 | 2029 | 2030 | |
|---|---|---|---|---|---|
| New Year's Day | Thu 01 Jan |
Fri 01 Jan |
Sat 01 Jan |
Mon 01 Jan |
Tue 01 Jan |
| Australia Day | Mon 26 Jan |
Tue 26 Jan |
Wed 26 Jan |
Fri 26 Jan |
|
| Australia Day (observed) |
Mon 28 Jan |
||||
| Labour Day | Mon 02 Mar |
Mon 01 Mar |
Mon 06 Mar |
Mon 05 Mar |
Mon 04 Mar |
| Good Friday | Fri 03 Apr |
Fri 26 Mar |
Fri 14 Apr |
Fri 30 Mar |
Fri 19 Apr |
| Easter Saturday | Sat 04 Apr |
Sat 27 Mar |
Sat 15 Apr |
Sat 31 Mar |
Sat 20 Apr |
| Easter Sunday | Sun 05 Apr |
Sun 28 Mar |
Sun 16 Apr |
Sun 01 Apr |
Sun 21 Apr |
| Easter Monday | Mon 06 Apr |
Mon 29 Mar |
Mon 17 Apr |
Mon 02 Apr |
Mon 22 Apr |
| Anzac Day | Sat 25 Apr |
Sun 25 Apr |
Tue 25 Apr |
Wed 25 Apr |
Thu 25 Apr |
| Anzac Day (additional) |
Mon 27 Apr |
Mon 26 Apr |
|||
| Western Australia Day | Mon 01 Jun |
Mon 07 Jun |
Mon 05 Jun |
Mon 04 Jun |
Mon 03 Jun |
| King's Birthday | Mon 28 Sep |
Mon 27 Sep |
Mon 25 Sep |
Mon 24 Sep |
Mon 23 Sep |
| Christmas Day | Fri 25 Dec |
Sat 25 Dec |
Mon 25 Dec |
Tue 25 Dec |
Wed 25 Dec |
| Boxing Day | Sat 26 Dec |
Sun 26 Dec |
Tue 26 Dec |
Wed 26 Dec |
Thu 26 Dec |
| Christmas (additional) |
Mon 28 Dec |
Mon 27 DecTue 28 Dec |
Export holidays to ICS (iCalendar) format for importing into calendar applications.
var ics = await Holidays.ExportToIcs();var ics = await Holidays.ExportToIcs(state);Export holidays to JSON format.
var json = await Holidays.ExportToJson();var json = await Holidays.ExportToJson(state);Export holidays to XML format.
var xml = await Holidays.ExportToXml();var xml = await Holidays.ExportToXml(state);Export holidays to CSV format.
var csv = await Holidays.ExportToCsv();var csv = await Holidays.ExportToCsv(state);Export holidays to Excel format (.xlsx).
var bytes = await Holidays.ExportToExcel();var bytes = await Holidays.ExportToExcel(state);The above APIs are all static. This means they are not Dependency Injection or test friendly.
HolidayService is an instance based wrapper for the above APIs that can be used in Dependency Injection and is test friendly.
All members are virtual so it can be mocked.
[Test]
public void Usage()
{
var holidayService = new HolidayService(TimeProvider.System);
var holidays = holidayService.ForYears(startYear: 2025, yearCount: 2);
foreach (var (date, state, name) in holidays)
{
Console.WriteLine($"date: {date}, state: {state}, name: {name}");
}
}[Test]
public void DependencyInjectionUsage()
{
var services = new ServiceCollection();
services.AddSingleton<HolidayService>();
services.AddSingleton(TimeProvider.System);
services.AddTransient<ClassUsingHolidays>();
using var provider = services.BuildServiceProvider();
var service = provider.GetRequiredService<ClassUsingHolidays>();
service.WriteHolidays();
}
public class ClassUsingHolidays(HolidayService holidayService)
{
public void WriteHolidays()
{
var holidays = holidayService.ForYears(startYear: 2025, yearCount: 2);
foreach (var (date, state, name) in holidays)
{
Console.WriteLine($"date: {date}, state: {state}, name: {name}");
}
}
}AlwaysHolidayService treats every day as a holiday
[Test]
public void AlwaysHolidayServiceUsage()
{
var service = new AlwaysHolidayService();
var result = service.ForYears(2023, 1).ToList();
AreEqual(8 * 365, result.Count); // 8 states * 365 days
IsTrue(result.All(item => item.name == "Holiday"));
}NeverHolidayService treats every day as not a holiday
[Test]
public void NeverHolidayServiceUsage()
{
var service = new NeverHolidayService();
var result = service.ForYears(2023, 1).ToList();
IsEmpty(result);
var date = new Date(2020, 1, 2);
IsFalse(service.IsNswHoliday(date));
}Australia designed by Atterratio Aeternus from The Noun Project.