Skip to content

.net lirary for calculating and retrieving public holiday dates in Australia

License

Notifications You must be signed in to change notification settings

pmcau/AustralianHolidays

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AustralianHolidays

Build status NuGet Status

.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.

Official sources

NuGet package

Usage

The main entry point is AustralianHolidays.Holidays

IsHoliday

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));

snippet source | anchor

With name

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);

snippet source | anchor

Isstateholiday

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());

snippet source | anchor

With name

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);

snippet source | anchor

ForYears

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}");
}

snippet source | anchor

For single state

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}");
}

snippet source | anchor

NationalForYears

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}");
}

snippet source | anchor

Holidays For State

var holidays = Holidays.ForNsw(2025);
foreach (var (date, name) in holidays)
{
    Console.WriteLine($"date: {date}, name: {name}");
}

snippet source | anchor

Federal government shutdown

IsFederalGovernmentShutdown

var date = new Date(2025, 12, 30);
var result = date.IsFederalGovernmentShutdown();

IsTrue(result);

snippet source | anchor

GetFederalGovernmentShutdown

var (start, end) = Holidays.GetFederalGovernmentShutdown(startYear: 2024);

AreEqual(new Date(2024, 12, 25), start);
AreEqual(new Date(2025, 1, 1), end);

snippet source | anchor

ExportToMarkdown

Federal

var md = await Holidays.ExportToMarkdown();

snippet source | anchor

Common holidays for all states

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
Anzac Day
(additional)
Mon 27 Apr
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec

State

var md = await Holidays.ExportToMarkdown(state);

snippet source | anchor

Australian Capital Territory (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Canberra Day Mon 10 Mar Mon 09 Mar Mon 08 Mar Mon 13 Mar Mon 12 Mar
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
Anzac Day
(additional)
Mon 27 Apr
Reconciliation Day Mon 02 Jun Mon 01 Jun Mon 31 May Mon 29 May Mon 28 May
King's Birthday Mon 09 Jun Mon 08 Jun Mon 14 Jun Mon 12 Jun Mon 11 Jun
Labour Day Mon 06 Oct Mon 05 Oct Mon 04 Oct Mon 02 Oct Mon 01 Oct
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec

New South Wales (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 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
(additional)
Mon 27 Jan
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sat 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
King's Birthday Mon 09 Jun Mon 08 Jun Mon 14 Jun Mon 12 Jun Mon 11 Jun
Bank Holiday Mon 04 Aug Mon 03 Aug Mon 02 Aug Mon 07 Aug Mon 06 Aug
Labour Day Mon 06 Oct Mon 05 Oct Mon 04 Oct Mon 02 Oct Mon 01 Oct
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec

Northern Territory (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sat 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
May Day Mon 05 May Mon 04 May Mon 03 May Mon 01 May Mon 07 May
King's Birthday Mon 09 Jun Mon 08 Jun Mon 14 Jun Mon 12 Jun Mon 11 Jun
Picnic Day Mon 04 Aug Mon 03 Aug Mon 02 Aug Mon 07 Aug Mon 06 Aug
Christmas Eve
(partial day)
Wed 24 Dec Thu 24 Dec Fri 24 Dec Sun 24 Dec Mon 24 Dec
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec
New Year's Eve
(partial day)
Wed 31 Dec Thu 31 Dec Fri 31 Dec Sun 31 Dec Mon 31 Dec

Queensland (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sat 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
Labour Day Mon 05 May Mon 04 May Mon 03 May Mon 01 May Mon 07 May
King's Birthday Mon 06 Oct Mon 05 Oct Mon 04 Oct Mon 02 Oct Mon 01 Oct
Christmas Eve
(partial day)
Wed 24 Dec Thu 24 Dec Fri 24 Dec Sun 24 Dec Mon 24 Dec
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec

South Australia (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Adelaide Cup Day Mon 10 Mar Mon 09 Mar Mon 08 Mar Mon 13 Mar Mon 12 Mar
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sat 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
King's Birthday Mon 09 Jun Mon 08 Jun Mon 14 Jun Mon 12 Jun Mon 11 Jun
Labour Day Mon 06 Oct Mon 05 Oct Mon 04 Oct Mon 02 Oct Mon 01 Oct
Christmas Eve
(partial day)
Wed 24 Dec Thu 24 Dec Fri 24 Dec Sun 24 Dec Mon 24 Dec
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Proclamation and Boxing Day Fri 26 Dec Tue 26 Dec Wed 26 Dec
Proclamation Day Sat 26 Dec Sun 26 Dec
Proclamation Day
(additional)
Mon 28 Dec Mon 27 Dec
New Year's Eve
(partial day)
Wed 31 Dec Thu 31 Dec Fri 31 Dec Sun 31 Dec Mon 31 Dec

Tasmania (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Eight Hours Day Mon 10 Mar Mon 09 Mar Mon 08 Mar Mon 13 Mar Mon 12 Mar
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Easter Tuesday
(Government employees only)
Tue 22 Apr Tue 07 Apr Tue 30 Mar Tue 18 Apr Tue 03 Apr
Anzac Day Fri 25 Apr Sat 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
King's Birthday Mon 09 Jun Mon 08 Jun Mon 14 Jun Mon 12 Jun Mon 11 Jun
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec

Victorian (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Labour Day Mon 10 Mar Mon 09 Mar Mon 08 Mar Mon 13 Mar Mon 12 Mar
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sat 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
King's Birthday Mon 09 Jun Mon 08 Jun Mon 14 Jun Mon 12 Jun Mon 11 Jun
Friday before AFL Grand Final
(Subject to AFL schedule)
Fri 26 Sep Fri 25 Sep Fri 24 Sep Fri 29 Sep Fri 28 Sep
Melbourne Cup Day Tue 04 Nov Tue 03 Nov Tue 02 Nov Tue 07 Nov Tue 06 Nov
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec

Western Australia (Reference)

2025 2026 2027 2028 2029
New Year's Day Wed 01 Jan Thu 01 Jan Fri 01 Jan Sat 01 Jan Mon 01 Jan
Australia Day Mon 26 Jan Tue 26 Jan Wed 26 Jan Fri 26 Jan
Australia Day
(additional)
Mon 27 Jan
Labour Day Mon 03 Mar Mon 02 Mar Mon 01 Mar Mon 06 Mar Mon 05 Mar
Good Friday Fri 18 Apr Fri 03 Apr Fri 26 Mar Fri 14 Apr Fri 30 Mar
Easter Saturday Sat 19 Apr Sat 04 Apr Sat 27 Mar Sat 15 Apr Sat 31 Mar
Easter Sunday Sun 20 Apr Sun 05 Apr Sun 28 Mar Sun 16 Apr Sun 01 Apr
Easter Monday Mon 21 Apr Mon 06 Apr Mon 29 Mar Mon 17 Apr Mon 02 Apr
Anzac Day Fri 25 Apr Sat 25 Apr Sun 25 Apr Tue 25 Apr Wed 25 Apr
Anzac Day
(additional)
Mon 27 Apr Mon 26 Apr
Western Australia Day Mon 02 Jun Mon 01 Jun Mon 07 Jun Mon 05 Jun Mon 04 Jun
King's Birthday Mon 29 Sep Mon 28 Sep Mon 27 Sep Mon 25 Sep Mon 24 Sep
Christmas Day Thu 25 Dec Fri 25 Dec Sat 25 Dec Mon 25 Dec Tue 25 Dec
Boxing Day Fri 26 Dec Sat 26 Dec Sun 26 Dec Tue 26 Dec Wed 26 Dec
Christmas
(additional)
Mon 28 Dec Mon 27 Dec
Tue 28 Dec
Wed 27 Dec
Thu 28 Dec
Thu 27 Dec
Fri 28 Dec

Dependency Injection API

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.

Usage

[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}");
    }
}

snippet source | anchor

Dependency Injection Usage

[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}");
        }
    }
}

snippet source | anchor

Testing

AlwaysHolidayService

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"));
}

snippet source | anchor

NeverHolidayService

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));
}

snippet source | anchor

Icon

Australia designed by Atterratio Aeternus from The Noun Project.

About

.net lirary for calculating and retrieving public holiday dates in Australia

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Languages