diff --git a/README.rst b/README.rst index b730a95f3..01bc05f69 100644 --- a/README.rst +++ b/README.rst @@ -142,7 +142,7 @@ Available Countries .. _ISO 639-1 code: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes .. _ISO 639-2 code: https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes -We currently support 142 country codes. The standard way to refer to a country +We currently support 143 country codes. The standard way to refer to a country is by using its `ISO 3166-1 alpha-2 code`_, the same used for domain names, and for a subdivision its `ISO 3166-2 code`_. Some of the countries support more than one language for holiday names output. @@ -441,7 +441,7 @@ All other default values are highlighted with bold: * - Ghana - GH - - - + - - * - Greece - GR @@ -523,6 +523,11 @@ All other default values are highlighted with bold: - - en_US, **ja**, th - BANK + * - Jersey + - JE + - + - + - * - Kazakhstan - KZ - diff --git a/holidays/countries/__init__.py b/holidays/countries/__init__.py index 6bbba7135..84efa2ff3 100644 --- a/holidays/countries/__init__.py +++ b/holidays/countries/__init__.py @@ -81,6 +81,7 @@ from .italy import Italy, IT, ITA from .jamaica import Jamaica, JM, JAM from .japan import Japan, JP, JPN +from .jersey import Jersey, JE, JEY from .kazakhstan import Kazakhstan, KZ, KAZ from .kenya import Kenya, KE, KEN from .kyrgyzstan import Kyrgyzstan, KG, KGZ diff --git a/holidays/countries/jersey.py b/holidays/countries/jersey.py new file mode 100644 index 000000000..496e9f368 --- /dev/null +++ b/holidays/countries/jersey.py @@ -0,0 +1,234 @@ +# python-holidays +# --------------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: vacanza team (https://github.com/orgs/vacanza/teams) (c) 2023-2024 +# dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023 +# ryanss <ryanssdev@icloud.com> (c) 2014-2017 +# Website: https://github.com/vacanza/python-holidays +# License: MIT (see LICENSE file) + +from datetime import date +from typing import Tuple + +from holidays.calendars.gregorian import JAN, APR, MAY, JUN, JUL, SEP, OCT, DEC +from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays +from holidays.observed_holiday_base import ( + ObservedHolidayBase, + SAT_SUN_TO_NEXT_WORKDAY, + SUN_TO_NEXT_WORKDAY, +) + + +class Jersey(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays): + """ + References: + - https://en.wikipedia.org/wiki/Public_holidays_in_Jersey + - https://www.jerseylaw.je/laws/current/Pages/15.560.20.aspx # 2010 Revision + - https://www.jerseylaw.je/laws/superseded/Pages/2006/15.560.20.aspx # 1952 Revision + - https://www.jerseylaw.je/laws/enacted/Pages/RO-3038.aspx # 1952 as enacted + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%205331.aspx # Bank Holidays + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%206795.aspx # May Day + Checked with: + - https://www.gov.je/Leisure/Events/WhatsOn/pages/bankholidaydates.aspx # From 2010 onwards + + This has only been cross-checked with the official source from 2010 onwards. + + Jersey has the same public holidays as the United Kingdom (England Subdivision) + - plus an extra day on 9 May, to mark Liberation Day (ignoring special holidays + like the Corn Riots Anniversary in 2021). + + If a bank holiday is on a sunday, a substitute weekday becomes a bank holiday, + normally the following Monday. From 2004 onwards this also applies to saturday. + """ + + country = "JE" + observed_label = "%s (observed)" + + def __init__(self, *args, **kwargs): + ChristianHolidays.__init__(self) + InternationalHolidays.__init__(self) + StaticHolidays.__init__(self, JerseyStaticHolidays) + kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY) + ObservedHolidayBase.__init__(self, *args, **kwargs) + + def _add_observed(self, dt: date, **kwargs) -> Tuple[bool, date]: + # Prior to 2004, in-lieu are only given for Sundays. + # https://www.jerseylaw.je/laws/enacted/Pages/RO-123-2004.aspx + kwargs.setdefault( + "rule", SUN_TO_NEXT_WORKDAY if dt < date(2004, OCT, 12) else self._observed_rule + ) + return super()._add_observed(dt, **kwargs) + + def _populate_public_holidays(self) -> None: + # Earliest available piece of law available is from 1952. + if self._year <= 1951: + return None + + # New Year's Day. + # Available online source shown that this was celebrated since at least 1952. + # Was briefly removed in 1983 only to be added back again before that came to effect. + + # New Year's Day + self._add_observed(self._add_new_years_day("New Year's Day")) + + # Good Friday + self._add_good_friday("Good Friday") + + # Easter Monday + self._add_easter_monday("Easter Monday") + + # May Day + # This only starts in 1980 (instead of 1978) for Jersey. + # The date is not moved in 2020 (unlike in the UK) as there's already VE Day Celebrations. + + # May Day bank holiday (first Monday in May) + if self._year >= 1980: + name = "May Day" + if self._year == 1995: + self._add_holiday_may_8(name) + else: + self._add_holiday_1st_mon_of_may(name) + + # Spring bank holiday + # Current Pattern started in 1970 for Jersey. + + # Spring bank holiday (last Monday in May) + if self._year >= 1970: + spring_bank_dates = { + 2002: (JUN, 4), + 2012: (JUN, 4), + 2022: (JUN, 2), + } + name = "Spring Bank Holiday" + if self._year in spring_bank_dates: + self._add_holiday(name, spring_bank_dates[self._year]) + else: + self._add_holiday_last_mon_of_may(name) + + # Whit Monday. + # Was in-use prior to Spring bank holiday adoption. + + if self._year <= 1969: + # Whit Monday. + self._add_whit_monday("Whit Monday") + + # Late Summer Bank Holiday + # Current Pattern started in 1970. Was previously first Monday of September for Jersey. + + # Late Summer bank holiday (last Monday in August) + summer_bank_holiday = "Late Summer Bank Holiday" + if self._year >= 1970: + self._add_holiday_last_mon_of_aug(summer_bank_holiday) + else: + self._add_holiday_1st_mon_of_sep(summer_bank_holiday) + + # Christmas Day + christmas_day = self._add_christmas_day("Christmas Day") + + # Boxing Day + boxing_day = self._add_christmas_day_two("Boxing Day") + + self._add_observed(christmas_day) + self._add_observed(boxing_day) + + # Jersey exclusive holidays + + # Liberation Day. + # Started in 1952. This has no in-lieus. + # Counts as Public Holiday when fall on the weekdays, also on Saturday from 2010 onwards. + # Specially held in 2010 on Sunday for the 65th Anniversary. + + # Liberation Day + liberation_day = self._add_holiday_may_9("Liberation Day") + if (self._is_sunday(liberation_day) and self._year != 2010) or ( + self._is_saturday(liberation_day) and self._year <= 2010 + ): + self.pop(liberation_day) + + +class JE(Jersey): + pass + + +class JEY(Jersey): + pass + + +class JerseyStaticHolidays: + """ + References: + - https://www.gov.je/News/2019/pages/vedaypublicholiday8may.aspx + - https://www.gov.je/news/2021/pages/cornriots.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20R%20%20O%209288.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20R%20%20O%209317.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%2042-2001.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%206350.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%206514.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%206924.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%207689.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%207877.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%208451.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/Jersey%20RO%208596.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/RO-050-2021.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/RO-108-2009.aspx + - https://www.jerseylaw.je/laws/enacted/Pages/RO-3038.aspx + """ + + # Mostly a direct copy of UnitedKingdomStaticHolidays. + + # Jersey Specifics: + # - Queen Elizabeth II's Royal Visit (1957, 1978, 1989, 2001)* + # *2004 one falls on existing Liberation Day. + # - 75th VE Day Anniversary (2020) + # - 250th Corn Riots/Code of 1771 Anniversary (2021). + + # Jersey-specific Special Observance + # - New Year's Day (1977, 1983, 1994, 2000) + # - Boxing Day (1976, 1981, 1982, 1987, 1992, 1993, 1994, 1998, 1999, 2009) + + # New Year's Day + new_years_day_in_lieu = "New Year's Day" + + # Boxing Day + boxing_day_in_lieu = "Boxing Day" + + # Elizabeth II's Royal Visit. + elizabeth_2_royal_visit = "Elizabeth II's Royal Visit" + + special_public_holidays = { + 1957: (JUL, 26, elizabeth_2_royal_visit), + 1977: (JUN, 7, "Silver Jubilee of Elizabeth II"), + 1978: (JUN, 27, elizabeth_2_royal_visit), + 1981: (JUL, 29, "Wedding of Charles and Diana"), + 1989: (MAY, 25, elizabeth_2_royal_visit), + 1999: (DEC, 31, "Millennium Celebrations"), + 2001: (JUL, 13, elizabeth_2_royal_visit), + 2002: (JUN, 3, "Golden Jubilee of Elizabeth II"), + 2011: (APR, 29, "Wedding of William and Catherine"), + 2012: (JUN, 5, "Diamond Jubilee of Elizabeth II"), + 2020: (MAY, 8, "75th Anniversary of VE Day"), + 2021: (SEP, 27, "250th Anniversary of the 1769 Corn Riots"), + 2022: ( + (JUN, 3, "Platinum Jubilee of Elizabeth II"), + (SEP, 19, "State Funeral of Queen Elizabeth II"), + ), + 2023: (MAY, 8, "Coronation of Charles III"), + } + special_public_holidays_observed = { + 1976: (DEC, 28, boxing_day_in_lieu), + 1977: (JAN, 3, new_years_day_in_lieu), + 1981: (DEC, 28, boxing_day_in_lieu), + 1982: (DEC, 28, boxing_day_in_lieu), + 1983: (JAN, 3, new_years_day_in_lieu), + 1987: (DEC, 28, boxing_day_in_lieu), + 1992: (DEC, 28, boxing_day_in_lieu), + 1993: (DEC, 28, boxing_day_in_lieu), + 1994: (JAN, 3, new_years_day_in_lieu), + 1998: (DEC, 28, boxing_day_in_lieu), + 1999: (DEC, 28, boxing_day_in_lieu), + 2000: (JAN, 3, new_years_day_in_lieu), + 2009: (DEC, 28, boxing_day_in_lieu), + } diff --git a/holidays/registry.py b/holidays/registry.py index 1cb877edb..632cd4d6f 100644 --- a/holidays/registry.py +++ b/holidays/registry.py @@ -87,6 +87,7 @@ "italy": ("Italy", "IT", "ITA"), "jamaica": ("Jamaica", "JM", "JAM"), "japan": ("Japan", "JP", "JPN"), + "jersey": ("Jersey", "JE", "JEY"), "kazakhstan": ("Kazakhstan", "KZ", "KAZ"), "kenya": ("Kenya", "KE", "KEN"), "kyrgyzstan": ("Kyrgyzstan", "KG", "KGZ"), diff --git a/snapshots/countries/JE_COMMON.json b/snapshots/countries/JE_COMMON.json new file mode 100644 index 000000000..d08334559 --- /dev/null +++ b/snapshots/countries/JE_COMMON.json @@ -0,0 +1,934 @@ +{ + "1952-01-01": "New Year's Day", + "1952-04-11": "Good Friday", + "1952-04-14": "Easter Monday", + "1952-05-09": "Liberation Day", + "1952-06-02": "Whit Monday", + "1952-09-01": "Late Summer Bank Holiday", + "1952-12-25": "Christmas Day", + "1952-12-26": "Boxing Day", + "1953-01-01": "New Year's Day", + "1953-04-03": "Good Friday", + "1953-04-06": "Easter Monday", + "1953-05-25": "Whit Monday", + "1953-09-07": "Late Summer Bank Holiday", + "1953-12-25": "Christmas Day", + "1953-12-26": "Boxing Day", + "1954-01-01": "New Year's Day", + "1954-04-16": "Good Friday", + "1954-04-19": "Easter Monday", + "1954-06-07": "Whit Monday", + "1954-09-06": "Late Summer Bank Holiday", + "1954-12-25": "Christmas Day", + "1954-12-26": "Boxing Day", + "1954-12-27": "Boxing Day (observed)", + "1955-01-01": "New Year's Day", + "1955-04-08": "Good Friday", + "1955-04-11": "Easter Monday", + "1955-05-09": "Liberation Day", + "1955-05-30": "Whit Monday", + "1955-09-05": "Late Summer Bank Holiday", + "1955-12-25": "Christmas Day", + "1955-12-26": "Boxing Day", + "1955-12-27": "Christmas Day (observed)", + "1956-01-01": "New Year's Day", + "1956-01-02": "New Year's Day (observed)", + "1956-03-30": "Good Friday", + "1956-04-02": "Easter Monday", + "1956-05-09": "Liberation Day", + "1956-05-21": "Whit Monday", + "1956-09-03": "Late Summer Bank Holiday", + "1956-12-25": "Christmas Day", + "1956-12-26": "Boxing Day", + "1957-01-01": "New Year's Day", + "1957-04-19": "Good Friday", + "1957-04-22": "Easter Monday", + "1957-05-09": "Liberation Day", + "1957-06-10": "Whit Monday", + "1957-07-26": "Elizabeth II's Royal Visit", + "1957-09-02": "Late Summer Bank Holiday", + "1957-12-25": "Christmas Day", + "1957-12-26": "Boxing Day", + "1958-01-01": "New Year's Day", + "1958-04-04": "Good Friday", + "1958-04-07": "Easter Monday", + "1958-05-09": "Liberation Day", + "1958-05-26": "Whit Monday", + "1958-09-01": "Late Summer Bank Holiday", + "1958-12-25": "Christmas Day", + "1958-12-26": "Boxing Day", + "1959-01-01": "New Year's Day", + "1959-03-27": "Good Friday", + "1959-03-30": "Easter Monday", + "1959-05-18": "Whit Monday", + "1959-09-07": "Late Summer Bank Holiday", + "1959-12-25": "Christmas Day", + "1959-12-26": "Boxing Day", + "1960-01-01": "New Year's Day", + "1960-04-15": "Good Friday", + "1960-04-18": "Easter Monday", + "1960-05-09": "Liberation Day", + "1960-06-06": "Whit Monday", + "1960-09-05": "Late Summer Bank Holiday", + "1960-12-25": "Christmas Day", + "1960-12-26": "Boxing Day", + "1960-12-27": "Christmas Day (observed)", + "1961-01-01": "New Year's Day", + "1961-01-02": "New Year's Day (observed)", + "1961-03-31": "Good Friday", + "1961-04-03": "Easter Monday", + "1961-05-09": "Liberation Day", + "1961-05-22": "Whit Monday", + "1961-09-04": "Late Summer Bank Holiday", + "1961-12-25": "Christmas Day", + "1961-12-26": "Boxing Day", + "1962-01-01": "New Year's Day", + "1962-04-20": "Good Friday", + "1962-04-23": "Easter Monday", + "1962-05-09": "Liberation Day", + "1962-06-11": "Whit Monday", + "1962-09-03": "Late Summer Bank Holiday", + "1962-12-25": "Christmas Day", + "1962-12-26": "Boxing Day", + "1963-01-01": "New Year's Day", + "1963-04-12": "Good Friday", + "1963-04-15": "Easter Monday", + "1963-05-09": "Liberation Day", + "1963-06-03": "Whit Monday", + "1963-09-02": "Late Summer Bank Holiday", + "1963-12-25": "Christmas Day", + "1963-12-26": "Boxing Day", + "1964-01-01": "New Year's Day", + "1964-03-27": "Good Friday", + "1964-03-30": "Easter Monday", + "1964-05-18": "Whit Monday", + "1964-09-07": "Late Summer Bank Holiday", + "1964-12-25": "Christmas Day", + "1964-12-26": "Boxing Day", + "1965-01-01": "New Year's Day", + "1965-04-16": "Good Friday", + "1965-04-19": "Easter Monday", + "1965-06-07": "Whit Monday", + "1965-09-06": "Late Summer Bank Holiday", + "1965-12-25": "Christmas Day", + "1965-12-26": "Boxing Day", + "1965-12-27": "Boxing Day (observed)", + "1966-01-01": "New Year's Day", + "1966-04-08": "Good Friday", + "1966-04-11": "Easter Monday", + "1966-05-09": "Liberation Day", + "1966-05-30": "Whit Monday", + "1966-09-05": "Late Summer Bank Holiday", + "1966-12-25": "Christmas Day", + "1966-12-26": "Boxing Day", + "1966-12-27": "Christmas Day (observed)", + "1967-01-01": "New Year's Day", + "1967-01-02": "New Year's Day (observed)", + "1967-03-24": "Good Friday", + "1967-03-27": "Easter Monday", + "1967-05-09": "Liberation Day", + "1967-05-15": "Whit Monday", + "1967-09-04": "Late Summer Bank Holiday", + "1967-12-25": "Christmas Day", + "1967-12-26": "Boxing Day", + "1968-01-01": "New Year's Day", + "1968-04-12": "Good Friday", + "1968-04-15": "Easter Monday", + "1968-05-09": "Liberation Day", + "1968-06-03": "Whit Monday", + "1968-09-02": "Late Summer Bank Holiday", + "1968-12-25": "Christmas Day", + "1968-12-26": "Boxing Day", + "1969-01-01": "New Year's Day", + "1969-04-04": "Good Friday", + "1969-04-07": "Easter Monday", + "1969-05-09": "Liberation Day", + "1969-05-26": "Whit Monday", + "1969-09-01": "Late Summer Bank Holiday", + "1969-12-25": "Christmas Day", + "1969-12-26": "Boxing Day", + "1970-01-01": "New Year's Day", + "1970-03-27": "Good Friday", + "1970-03-30": "Easter Monday", + "1970-05-25": "Spring Bank Holiday", + "1970-08-31": "Late Summer Bank Holiday", + "1970-12-25": "Christmas Day", + "1970-12-26": "Boxing Day", + "1971-01-01": "New Year's Day", + "1971-04-09": "Good Friday", + "1971-04-12": "Easter Monday", + "1971-05-31": "Spring Bank Holiday", + "1971-08-30": "Late Summer Bank Holiday", + "1971-12-25": "Christmas Day", + "1971-12-26": "Boxing Day", + "1971-12-27": "Boxing Day (observed)", + "1972-01-01": "New Year's Day", + "1972-03-31": "Good Friday", + "1972-04-03": "Easter Monday", + "1972-05-09": "Liberation Day", + "1972-05-29": "Spring Bank Holiday", + "1972-08-28": "Late Summer Bank Holiday", + "1972-12-25": "Christmas Day", + "1972-12-26": "Boxing Day", + "1973-01-01": "New Year's Day", + "1973-04-20": "Good Friday", + "1973-04-23": "Easter Monday", + "1973-05-09": "Liberation Day", + "1973-05-28": "Spring Bank Holiday", + "1973-08-27": "Late Summer Bank Holiday", + "1973-12-25": "Christmas Day", + "1973-12-26": "Boxing Day", + "1974-01-01": "New Year's Day", + "1974-04-12": "Good Friday", + "1974-04-15": "Easter Monday", + "1974-05-09": "Liberation Day", + "1974-05-27": "Spring Bank Holiday", + "1974-08-26": "Late Summer Bank Holiday", + "1974-12-25": "Christmas Day", + "1974-12-26": "Boxing Day", + "1975-01-01": "New Year's Day", + "1975-03-28": "Good Friday", + "1975-03-31": "Easter Monday", + "1975-05-09": "Liberation Day", + "1975-05-26": "Spring Bank Holiday", + "1975-08-25": "Late Summer Bank Holiday", + "1975-12-25": "Christmas Day", + "1975-12-26": "Boxing Day", + "1976-01-01": "New Year's Day", + "1976-04-16": "Good Friday", + "1976-04-19": "Easter Monday", + "1976-05-31": "Spring Bank Holiday", + "1976-08-30": "Late Summer Bank Holiday", + "1976-12-25": "Christmas Day", + "1976-12-26": "Boxing Day", + "1976-12-27": "Boxing Day (observed)", + "1976-12-28": "Boxing Day (observed)", + "1977-01-01": "New Year's Day", + "1977-01-03": "New Year's Day (observed)", + "1977-04-08": "Good Friday", + "1977-04-11": "Easter Monday", + "1977-05-09": "Liberation Day", + "1977-05-30": "Spring Bank Holiday", + "1977-06-07": "Silver Jubilee of Elizabeth II", + "1977-08-29": "Late Summer Bank Holiday", + "1977-12-25": "Christmas Day", + "1977-12-26": "Boxing Day", + "1977-12-27": "Christmas Day (observed)", + "1978-01-01": "New Year's Day", + "1978-01-02": "New Year's Day (observed)", + "1978-03-24": "Good Friday", + "1978-03-27": "Easter Monday", + "1978-05-09": "Liberation Day", + "1978-05-29": "Spring Bank Holiday", + "1978-06-27": "Elizabeth II's Royal Visit", + "1978-08-28": "Late Summer Bank Holiday", + "1978-12-25": "Christmas Day", + "1978-12-26": "Boxing Day", + "1979-01-01": "New Year's Day", + "1979-04-13": "Good Friday", + "1979-04-16": "Easter Monday", + "1979-05-09": "Liberation Day", + "1979-05-28": "Spring Bank Holiday", + "1979-08-27": "Late Summer Bank Holiday", + "1979-12-25": "Christmas Day", + "1979-12-26": "Boxing Day", + "1980-01-01": "New Year's Day", + "1980-04-04": "Good Friday", + "1980-04-07": "Easter Monday", + "1980-05-05": "May Day", + "1980-05-09": "Liberation Day", + "1980-05-26": "Spring Bank Holiday", + "1980-08-25": "Late Summer Bank Holiday", + "1980-12-25": "Christmas Day", + "1980-12-26": "Boxing Day", + "1981-01-01": "New Year's Day", + "1981-04-17": "Good Friday", + "1981-04-20": "Easter Monday", + "1981-05-04": "May Day", + "1981-05-25": "Spring Bank Holiday", + "1981-07-29": "Wedding of Charles and Diana", + "1981-08-31": "Late Summer Bank Holiday", + "1981-12-25": "Christmas Day", + "1981-12-26": "Boxing Day", + "1981-12-28": "Boxing Day (observed)", + "1982-01-01": "New Year's Day", + "1982-04-09": "Good Friday", + "1982-04-12": "Easter Monday", + "1982-05-03": "May Day", + "1982-05-31": "Spring Bank Holiday", + "1982-08-30": "Late Summer Bank Holiday", + "1982-12-25": "Christmas Day", + "1982-12-26": "Boxing Day", + "1982-12-27": "Boxing Day (observed)", + "1982-12-28": "Boxing Day (observed)", + "1983-01-01": "New Year's Day", + "1983-01-03": "New Year's Day (observed)", + "1983-04-01": "Good Friday", + "1983-04-04": "Easter Monday", + "1983-05-02": "May Day", + "1983-05-09": "Liberation Day", + "1983-05-30": "Spring Bank Holiday", + "1983-08-29": "Late Summer Bank Holiday", + "1983-12-25": "Christmas Day", + "1983-12-26": "Boxing Day", + "1983-12-27": "Christmas Day (observed)", + "1984-01-01": "New Year's Day", + "1984-01-02": "New Year's Day (observed)", + "1984-04-20": "Good Friday", + "1984-04-23": "Easter Monday", + "1984-05-07": "May Day", + "1984-05-09": "Liberation Day", + "1984-05-28": "Spring Bank Holiday", + "1984-08-27": "Late Summer Bank Holiday", + "1984-12-25": "Christmas Day", + "1984-12-26": "Boxing Day", + "1985-01-01": "New Year's Day", + "1985-04-05": "Good Friday", + "1985-04-08": "Easter Monday", + "1985-05-06": "May Day", + "1985-05-09": "Liberation Day", + "1985-05-27": "Spring Bank Holiday", + "1985-08-26": "Late Summer Bank Holiday", + "1985-12-25": "Christmas Day", + "1985-12-26": "Boxing Day", + "1986-01-01": "New Year's Day", + "1986-03-28": "Good Friday", + "1986-03-31": "Easter Monday", + "1986-05-05": "May Day", + "1986-05-09": "Liberation Day", + "1986-05-26": "Spring Bank Holiday", + "1986-08-25": "Late Summer Bank Holiday", + "1986-12-25": "Christmas Day", + "1986-12-26": "Boxing Day", + "1987-01-01": "New Year's Day", + "1987-04-17": "Good Friday", + "1987-04-20": "Easter Monday", + "1987-05-04": "May Day", + "1987-05-25": "Spring Bank Holiday", + "1987-08-31": "Late Summer Bank Holiday", + "1987-12-25": "Christmas Day", + "1987-12-26": "Boxing Day", + "1987-12-28": "Boxing Day (observed)", + "1988-01-01": "New Year's Day", + "1988-04-01": "Good Friday", + "1988-04-04": "Easter Monday", + "1988-05-02": "May Day", + "1988-05-09": "Liberation Day", + "1988-05-30": "Spring Bank Holiday", + "1988-08-29": "Late Summer Bank Holiday", + "1988-12-25": "Christmas Day", + "1988-12-26": "Boxing Day", + "1988-12-27": "Christmas Day (observed)", + "1989-01-01": "New Year's Day", + "1989-01-02": "New Year's Day (observed)", + "1989-03-24": "Good Friday", + "1989-03-27": "Easter Monday", + "1989-05-01": "May Day", + "1989-05-09": "Liberation Day", + "1989-05-25": "Elizabeth II's Royal Visit", + "1989-05-29": "Spring Bank Holiday", + "1989-08-28": "Late Summer Bank Holiday", + "1989-12-25": "Christmas Day", + "1989-12-26": "Boxing Day", + "1990-01-01": "New Year's Day", + "1990-04-13": "Good Friday", + "1990-04-16": "Easter Monday", + "1990-05-07": "May Day", + "1990-05-09": "Liberation Day", + "1990-05-28": "Spring Bank Holiday", + "1990-08-27": "Late Summer Bank Holiday", + "1990-12-25": "Christmas Day", + "1990-12-26": "Boxing Day", + "1991-01-01": "New Year's Day", + "1991-03-29": "Good Friday", + "1991-04-01": "Easter Monday", + "1991-05-06": "May Day", + "1991-05-09": "Liberation Day", + "1991-05-27": "Spring Bank Holiday", + "1991-08-26": "Late Summer Bank Holiday", + "1991-12-25": "Christmas Day", + "1991-12-26": "Boxing Day", + "1992-01-01": "New Year's Day", + "1992-04-17": "Good Friday", + "1992-04-20": "Easter Monday", + "1992-05-04": "May Day", + "1992-05-25": "Spring Bank Holiday", + "1992-08-31": "Late Summer Bank Holiday", + "1992-12-25": "Christmas Day", + "1992-12-26": "Boxing Day", + "1992-12-28": "Boxing Day (observed)", + "1993-01-01": "New Year's Day", + "1993-04-09": "Good Friday", + "1993-04-12": "Easter Monday", + "1993-05-03": "May Day", + "1993-05-31": "Spring Bank Holiday", + "1993-08-30": "Late Summer Bank Holiday", + "1993-12-25": "Christmas Day", + "1993-12-26": "Boxing Day", + "1993-12-27": "Boxing Day (observed)", + "1993-12-28": "Boxing Day (observed)", + "1994-01-01": "New Year's Day", + "1994-01-03": "New Year's Day (observed)", + "1994-04-01": "Good Friday", + "1994-04-04": "Easter Monday", + "1994-05-02": "May Day", + "1994-05-09": "Liberation Day", + "1994-05-30": "Spring Bank Holiday", + "1994-08-29": "Late Summer Bank Holiday", + "1994-12-25": "Christmas Day", + "1994-12-26": "Boxing Day", + "1994-12-27": "Christmas Day (observed)", + "1995-01-01": "New Year's Day", + "1995-01-02": "New Year's Day (observed)", + "1995-04-14": "Good Friday", + "1995-04-17": "Easter Monday", + "1995-05-08": "May Day", + "1995-05-09": "Liberation Day", + "1995-05-29": "Spring Bank Holiday", + "1995-08-28": "Late Summer Bank Holiday", + "1995-12-25": "Christmas Day", + "1995-12-26": "Boxing Day", + "1996-01-01": "New Year's Day", + "1996-04-05": "Good Friday", + "1996-04-08": "Easter Monday", + "1996-05-06": "May Day", + "1996-05-09": "Liberation Day", + "1996-05-27": "Spring Bank Holiday", + "1996-08-26": "Late Summer Bank Holiday", + "1996-12-25": "Christmas Day", + "1996-12-26": "Boxing Day", + "1997-01-01": "New Year's Day", + "1997-03-28": "Good Friday", + "1997-03-31": "Easter Monday", + "1997-05-05": "May Day", + "1997-05-09": "Liberation Day", + "1997-05-26": "Spring Bank Holiday", + "1997-08-25": "Late Summer Bank Holiday", + "1997-12-25": "Christmas Day", + "1997-12-26": "Boxing Day", + "1998-01-01": "New Year's Day", + "1998-04-10": "Good Friday", + "1998-04-13": "Easter Monday", + "1998-05-04": "May Day", + "1998-05-25": "Spring Bank Holiday", + "1998-08-31": "Late Summer Bank Holiday", + "1998-12-25": "Christmas Day", + "1998-12-26": "Boxing Day", + "1998-12-28": "Boxing Day (observed)", + "1999-01-01": "New Year's Day", + "1999-04-02": "Good Friday", + "1999-04-05": "Easter Monday", + "1999-05-03": "May Day", + "1999-05-31": "Spring Bank Holiday", + "1999-08-30": "Late Summer Bank Holiday", + "1999-12-25": "Christmas Day", + "1999-12-26": "Boxing Day", + "1999-12-27": "Boxing Day (observed)", + "1999-12-28": "Boxing Day (observed)", + "1999-12-31": "Millennium Celebrations", + "2000-01-01": "New Year's Day", + "2000-01-03": "New Year's Day (observed)", + "2000-04-21": "Good Friday", + "2000-04-24": "Easter Monday", + "2000-05-01": "May Day", + "2000-05-09": "Liberation Day", + "2000-05-29": "Spring Bank Holiday", + "2000-08-28": "Late Summer Bank Holiday", + "2000-12-25": "Christmas Day", + "2000-12-26": "Boxing Day", + "2001-01-01": "New Year's Day", + "2001-04-13": "Good Friday", + "2001-04-16": "Easter Monday", + "2001-05-07": "May Day", + "2001-05-09": "Liberation Day", + "2001-05-28": "Spring Bank Holiday", + "2001-07-13": "Elizabeth II's Royal Visit", + "2001-08-27": "Late Summer Bank Holiday", + "2001-12-25": "Christmas Day", + "2001-12-26": "Boxing Day", + "2002-01-01": "New Year's Day", + "2002-03-29": "Good Friday", + "2002-04-01": "Easter Monday", + "2002-05-06": "May Day", + "2002-05-09": "Liberation Day", + "2002-06-03": "Golden Jubilee of Elizabeth II", + "2002-06-04": "Spring Bank Holiday", + "2002-08-26": "Late Summer Bank Holiday", + "2002-12-25": "Christmas Day", + "2002-12-26": "Boxing Day", + "2003-01-01": "New Year's Day", + "2003-04-18": "Good Friday", + "2003-04-21": "Easter Monday", + "2003-05-05": "May Day", + "2003-05-09": "Liberation Day", + "2003-05-26": "Spring Bank Holiday", + "2003-08-25": "Late Summer Bank Holiday", + "2003-12-25": "Christmas Day", + "2003-12-26": "Boxing Day", + "2004-01-01": "New Year's Day", + "2004-04-09": "Good Friday", + "2004-04-12": "Easter Monday", + "2004-05-03": "May Day", + "2004-05-31": "Spring Bank Holiday", + "2004-08-30": "Late Summer Bank Holiday", + "2004-12-25": "Christmas Day", + "2004-12-26": "Boxing Day", + "2004-12-27": "Christmas Day (observed)", + "2004-12-28": "Boxing Day (observed)", + "2005-01-01": "New Year's Day", + "2005-01-03": "New Year's Day (observed)", + "2005-03-25": "Good Friday", + "2005-03-28": "Easter Monday", + "2005-05-02": "May Day", + "2005-05-09": "Liberation Day", + "2005-05-30": "Spring Bank Holiday", + "2005-08-29": "Late Summer Bank Holiday", + "2005-12-25": "Christmas Day", + "2005-12-26": "Boxing Day", + "2005-12-27": "Christmas Day (observed)", + "2006-01-01": "New Year's Day", + "2006-01-02": "New Year's Day (observed)", + "2006-04-14": "Good Friday", + "2006-04-17": "Easter Monday", + "2006-05-01": "May Day", + "2006-05-09": "Liberation Day", + "2006-05-29": "Spring Bank Holiday", + "2006-08-28": "Late Summer Bank Holiday", + "2006-12-25": "Christmas Day", + "2006-12-26": "Boxing Day", + "2007-01-01": "New Year's Day", + "2007-04-06": "Good Friday", + "2007-04-09": "Easter Monday", + "2007-05-07": "May Day", + "2007-05-09": "Liberation Day", + "2007-05-28": "Spring Bank Holiday", + "2007-08-27": "Late Summer Bank Holiday", + "2007-12-25": "Christmas Day", + "2007-12-26": "Boxing Day", + "2008-01-01": "New Year's Day", + "2008-03-21": "Good Friday", + "2008-03-24": "Easter Monday", + "2008-05-05": "May Day", + "2008-05-09": "Liberation Day", + "2008-05-26": "Spring Bank Holiday", + "2008-08-25": "Late Summer Bank Holiday", + "2008-12-25": "Christmas Day", + "2008-12-26": "Boxing Day", + "2009-01-01": "New Year's Day", + "2009-04-10": "Good Friday", + "2009-04-13": "Easter Monday", + "2009-05-04": "May Day", + "2009-05-25": "Spring Bank Holiday", + "2009-08-31": "Late Summer Bank Holiday", + "2009-12-25": "Christmas Day", + "2009-12-26": "Boxing Day", + "2009-12-28": "Boxing Day (observed)", + "2010-01-01": "New Year's Day", + "2010-04-02": "Good Friday", + "2010-04-05": "Easter Monday", + "2010-05-03": "May Day", + "2010-05-09": "Liberation Day", + "2010-05-31": "Spring Bank Holiday", + "2010-08-30": "Late Summer Bank Holiday", + "2010-12-25": "Christmas Day", + "2010-12-26": "Boxing Day", + "2010-12-27": "Christmas Day (observed)", + "2010-12-28": "Boxing Day (observed)", + "2011-01-01": "New Year's Day", + "2011-01-03": "New Year's Day (observed)", + "2011-04-22": "Good Friday", + "2011-04-25": "Easter Monday", + "2011-04-29": "Wedding of William and Catherine", + "2011-05-02": "May Day", + "2011-05-09": "Liberation Day", + "2011-05-30": "Spring Bank Holiday", + "2011-08-29": "Late Summer Bank Holiday", + "2011-12-25": "Christmas Day", + "2011-12-26": "Boxing Day", + "2011-12-27": "Christmas Day (observed)", + "2012-01-01": "New Year's Day", + "2012-01-02": "New Year's Day (observed)", + "2012-04-06": "Good Friday", + "2012-04-09": "Easter Monday", + "2012-05-07": "May Day", + "2012-05-09": "Liberation Day", + "2012-06-04": "Spring Bank Holiday", + "2012-06-05": "Diamond Jubilee of Elizabeth II", + "2012-08-27": "Late Summer Bank Holiday", + "2012-12-25": "Christmas Day", + "2012-12-26": "Boxing Day", + "2013-01-01": "New Year's Day", + "2013-03-29": "Good Friday", + "2013-04-01": "Easter Monday", + "2013-05-06": "May Day", + "2013-05-09": "Liberation Day", + "2013-05-27": "Spring Bank Holiday", + "2013-08-26": "Late Summer Bank Holiday", + "2013-12-25": "Christmas Day", + "2013-12-26": "Boxing Day", + "2014-01-01": "New Year's Day", + "2014-04-18": "Good Friday", + "2014-04-21": "Easter Monday", + "2014-05-05": "May Day", + "2014-05-09": "Liberation Day", + "2014-05-26": "Spring Bank Holiday", + "2014-08-25": "Late Summer Bank Holiday", + "2014-12-25": "Christmas Day", + "2014-12-26": "Boxing Day", + "2015-01-01": "New Year's Day", + "2015-04-03": "Good Friday", + "2015-04-06": "Easter Monday", + "2015-05-04": "May Day", + "2015-05-09": "Liberation Day", + "2015-05-25": "Spring Bank Holiday", + "2015-08-31": "Late Summer Bank Holiday", + "2015-12-25": "Christmas Day", + "2015-12-26": "Boxing Day", + "2015-12-28": "Boxing Day (observed)", + "2016-01-01": "New Year's Day", + "2016-03-25": "Good Friday", + "2016-03-28": "Easter Monday", + "2016-05-02": "May Day", + "2016-05-09": "Liberation Day", + "2016-05-30": "Spring Bank Holiday", + "2016-08-29": "Late Summer Bank Holiday", + "2016-12-25": "Christmas Day", + "2016-12-26": "Boxing Day", + "2016-12-27": "Christmas Day (observed)", + "2017-01-01": "New Year's Day", + "2017-01-02": "New Year's Day (observed)", + "2017-04-14": "Good Friday", + "2017-04-17": "Easter Monday", + "2017-05-01": "May Day", + "2017-05-09": "Liberation Day", + "2017-05-29": "Spring Bank Holiday", + "2017-08-28": "Late Summer Bank Holiday", + "2017-12-25": "Christmas Day", + "2017-12-26": "Boxing Day", + "2018-01-01": "New Year's Day", + "2018-03-30": "Good Friday", + "2018-04-02": "Easter Monday", + "2018-05-07": "May Day", + "2018-05-09": "Liberation Day", + "2018-05-28": "Spring Bank Holiday", + "2018-08-27": "Late Summer Bank Holiday", + "2018-12-25": "Christmas Day", + "2018-12-26": "Boxing Day", + "2019-01-01": "New Year's Day", + "2019-04-19": "Good Friday", + "2019-04-22": "Easter Monday", + "2019-05-06": "May Day", + "2019-05-09": "Liberation Day", + "2019-05-27": "Spring Bank Holiday", + "2019-08-26": "Late Summer Bank Holiday", + "2019-12-25": "Christmas Day", + "2019-12-26": "Boxing Day", + "2020-01-01": "New Year's Day", + "2020-04-10": "Good Friday", + "2020-04-13": "Easter Monday", + "2020-05-04": "May Day", + "2020-05-08": "75th Anniversary of VE Day", + "2020-05-09": "Liberation Day", + "2020-05-25": "Spring Bank Holiday", + "2020-08-31": "Late Summer Bank Holiday", + "2020-12-25": "Christmas Day", + "2020-12-26": "Boxing Day", + "2020-12-28": "Boxing Day (observed)", + "2021-01-01": "New Year's Day", + "2021-04-02": "Good Friday", + "2021-04-05": "Easter Monday", + "2021-05-03": "May Day", + "2021-05-31": "Spring Bank Holiday", + "2021-08-30": "Late Summer Bank Holiday", + "2021-09-27": "250th Anniversary of the 1769 Corn Riots", + "2021-12-25": "Christmas Day", + "2021-12-26": "Boxing Day", + "2021-12-27": "Christmas Day (observed)", + "2021-12-28": "Boxing Day (observed)", + "2022-01-01": "New Year's Day", + "2022-01-03": "New Year's Day (observed)", + "2022-04-15": "Good Friday", + "2022-04-18": "Easter Monday", + "2022-05-02": "May Day", + "2022-05-09": "Liberation Day", + "2022-06-02": "Spring Bank Holiday", + "2022-06-03": "Platinum Jubilee of Elizabeth II", + "2022-08-29": "Late Summer Bank Holiday", + "2022-09-19": "State Funeral of Queen Elizabeth II", + "2022-12-25": "Christmas Day", + "2022-12-26": "Boxing Day", + "2022-12-27": "Christmas Day (observed)", + "2023-01-01": "New Year's Day", + "2023-01-02": "New Year's Day (observed)", + "2023-04-07": "Good Friday", + "2023-04-10": "Easter Monday", + "2023-05-01": "May Day", + "2023-05-08": "Coronation of Charles III", + "2023-05-09": "Liberation Day", + "2023-05-29": "Spring Bank Holiday", + "2023-08-28": "Late Summer Bank Holiday", + "2023-12-25": "Christmas Day", + "2023-12-26": "Boxing Day", + "2024-01-01": "New Year's Day", + "2024-03-29": "Good Friday", + "2024-04-01": "Easter Monday", + "2024-05-06": "May Day", + "2024-05-09": "Liberation Day", + "2024-05-27": "Spring Bank Holiday", + "2024-08-26": "Late Summer Bank Holiday", + "2024-12-25": "Christmas Day", + "2024-12-26": "Boxing Day", + "2025-01-01": "New Year's Day", + "2025-04-18": "Good Friday", + "2025-04-21": "Easter Monday", + "2025-05-05": "May Day", + "2025-05-09": "Liberation Day", + "2025-05-26": "Spring Bank Holiday", + "2025-08-25": "Late Summer Bank Holiday", + "2025-12-25": "Christmas Day", + "2025-12-26": "Boxing Day", + "2026-01-01": "New Year's Day", + "2026-04-03": "Good Friday", + "2026-04-06": "Easter Monday", + "2026-05-04": "May Day", + "2026-05-09": "Liberation Day", + "2026-05-25": "Spring Bank Holiday", + "2026-08-31": "Late Summer Bank Holiday", + "2026-12-25": "Christmas Day", + "2026-12-26": "Boxing Day", + "2026-12-28": "Boxing Day (observed)", + "2027-01-01": "New Year's Day", + "2027-03-26": "Good Friday", + "2027-03-29": "Easter Monday", + "2027-05-03": "May Day", + "2027-05-31": "Spring Bank Holiday", + "2027-08-30": "Late Summer Bank Holiday", + "2027-12-25": "Christmas Day", + "2027-12-26": "Boxing Day", + "2027-12-27": "Christmas Day (observed)", + "2027-12-28": "Boxing Day (observed)", + "2028-01-01": "New Year's Day", + "2028-01-03": "New Year's Day (observed)", + "2028-04-14": "Good Friday", + "2028-04-17": "Easter Monday", + "2028-05-01": "May Day", + "2028-05-09": "Liberation Day", + "2028-05-29": "Spring Bank Holiday", + "2028-08-28": "Late Summer Bank Holiday", + "2028-12-25": "Christmas Day", + "2028-12-26": "Boxing Day", + "2029-01-01": "New Year's Day", + "2029-03-30": "Good Friday", + "2029-04-02": "Easter Monday", + "2029-05-07": "May Day", + "2029-05-09": "Liberation Day", + "2029-05-28": "Spring Bank Holiday", + "2029-08-27": "Late Summer Bank Holiday", + "2029-12-25": "Christmas Day", + "2029-12-26": "Boxing Day", + "2030-01-01": "New Year's Day", + "2030-04-19": "Good Friday", + "2030-04-22": "Easter Monday", + "2030-05-06": "May Day", + "2030-05-09": "Liberation Day", + "2030-05-27": "Spring Bank Holiday", + "2030-08-26": "Late Summer Bank Holiday", + "2030-12-25": "Christmas Day", + "2030-12-26": "Boxing Day", + "2031-01-01": "New Year's Day", + "2031-04-11": "Good Friday", + "2031-04-14": "Easter Monday", + "2031-05-05": "May Day", + "2031-05-09": "Liberation Day", + "2031-05-26": "Spring Bank Holiday", + "2031-08-25": "Late Summer Bank Holiday", + "2031-12-25": "Christmas Day", + "2031-12-26": "Boxing Day", + "2032-01-01": "New Year's Day", + "2032-03-26": "Good Friday", + "2032-03-29": "Easter Monday", + "2032-05-03": "May Day", + "2032-05-31": "Spring Bank Holiday", + "2032-08-30": "Late Summer Bank Holiday", + "2032-12-25": "Christmas Day", + "2032-12-26": "Boxing Day", + "2032-12-27": "Christmas Day (observed)", + "2032-12-28": "Boxing Day (observed)", + "2033-01-01": "New Year's Day", + "2033-01-03": "New Year's Day (observed)", + "2033-04-15": "Good Friday", + "2033-04-18": "Easter Monday", + "2033-05-02": "May Day", + "2033-05-09": "Liberation Day", + "2033-05-30": "Spring Bank Holiday", + "2033-08-29": "Late Summer Bank Holiday", + "2033-12-25": "Christmas Day", + "2033-12-26": "Boxing Day", + "2033-12-27": "Christmas Day (observed)", + "2034-01-01": "New Year's Day", + "2034-01-02": "New Year's Day (observed)", + "2034-04-07": "Good Friday", + "2034-04-10": "Easter Monday", + "2034-05-01": "May Day", + "2034-05-09": "Liberation Day", + "2034-05-29": "Spring Bank Holiday", + "2034-08-28": "Late Summer Bank Holiday", + "2034-12-25": "Christmas Day", + "2034-12-26": "Boxing Day", + "2035-01-01": "New Year's Day", + "2035-03-23": "Good Friday", + "2035-03-26": "Easter Monday", + "2035-05-07": "May Day", + "2035-05-09": "Liberation Day", + "2035-05-28": "Spring Bank Holiday", + "2035-08-27": "Late Summer Bank Holiday", + "2035-12-25": "Christmas Day", + "2035-12-26": "Boxing Day", + "2036-01-01": "New Year's Day", + "2036-04-11": "Good Friday", + "2036-04-14": "Easter Monday", + "2036-05-05": "May Day", + "2036-05-09": "Liberation Day", + "2036-05-26": "Spring Bank Holiday", + "2036-08-25": "Late Summer Bank Holiday", + "2036-12-25": "Christmas Day", + "2036-12-26": "Boxing Day", + "2037-01-01": "New Year's Day", + "2037-04-03": "Good Friday", + "2037-04-06": "Easter Monday", + "2037-05-04": "May Day", + "2037-05-09": "Liberation Day", + "2037-05-25": "Spring Bank Holiday", + "2037-08-31": "Late Summer Bank Holiday", + "2037-12-25": "Christmas Day", + "2037-12-26": "Boxing Day", + "2037-12-28": "Boxing Day (observed)", + "2038-01-01": "New Year's Day", + "2038-04-23": "Good Friday", + "2038-04-26": "Easter Monday", + "2038-05-03": "May Day", + "2038-05-31": "Spring Bank Holiday", + "2038-08-30": "Late Summer Bank Holiday", + "2038-12-25": "Christmas Day", + "2038-12-26": "Boxing Day", + "2038-12-27": "Christmas Day (observed)", + "2038-12-28": "Boxing Day (observed)", + "2039-01-01": "New Year's Day", + "2039-01-03": "New Year's Day (observed)", + "2039-04-08": "Good Friday", + "2039-04-11": "Easter Monday", + "2039-05-02": "May Day", + "2039-05-09": "Liberation Day", + "2039-05-30": "Spring Bank Holiday", + "2039-08-29": "Late Summer Bank Holiday", + "2039-12-25": "Christmas Day", + "2039-12-26": "Boxing Day", + "2039-12-27": "Christmas Day (observed)", + "2040-01-01": "New Year's Day", + "2040-01-02": "New Year's Day (observed)", + "2040-03-30": "Good Friday", + "2040-04-02": "Easter Monday", + "2040-05-07": "May Day", + "2040-05-09": "Liberation Day", + "2040-05-28": "Spring Bank Holiday", + "2040-08-27": "Late Summer Bank Holiday", + "2040-12-25": "Christmas Day", + "2040-12-26": "Boxing Day", + "2041-01-01": "New Year's Day", + "2041-04-19": "Good Friday", + "2041-04-22": "Easter Monday", + "2041-05-06": "May Day", + "2041-05-09": "Liberation Day", + "2041-05-27": "Spring Bank Holiday", + "2041-08-26": "Late Summer Bank Holiday", + "2041-12-25": "Christmas Day", + "2041-12-26": "Boxing Day", + "2042-01-01": "New Year's Day", + "2042-04-04": "Good Friday", + "2042-04-07": "Easter Monday", + "2042-05-05": "May Day", + "2042-05-09": "Liberation Day", + "2042-05-26": "Spring Bank Holiday", + "2042-08-25": "Late Summer Bank Holiday", + "2042-12-25": "Christmas Day", + "2042-12-26": "Boxing Day", + "2043-01-01": "New Year's Day", + "2043-03-27": "Good Friday", + "2043-03-30": "Easter Monday", + "2043-05-04": "May Day", + "2043-05-09": "Liberation Day", + "2043-05-25": "Spring Bank Holiday", + "2043-08-31": "Late Summer Bank Holiday", + "2043-12-25": "Christmas Day", + "2043-12-26": "Boxing Day", + "2043-12-28": "Boxing Day (observed)", + "2044-01-01": "New Year's Day", + "2044-04-15": "Good Friday", + "2044-04-18": "Easter Monday", + "2044-05-02": "May Day", + "2044-05-09": "Liberation Day", + "2044-05-30": "Spring Bank Holiday", + "2044-08-29": "Late Summer Bank Holiday", + "2044-12-25": "Christmas Day", + "2044-12-26": "Boxing Day", + "2044-12-27": "Christmas Day (observed)", + "2045-01-01": "New Year's Day", + "2045-01-02": "New Year's Day (observed)", + "2045-04-07": "Good Friday", + "2045-04-10": "Easter Monday", + "2045-05-01": "May Day", + "2045-05-09": "Liberation Day", + "2045-05-29": "Spring Bank Holiday", + "2045-08-28": "Late Summer Bank Holiday", + "2045-12-25": "Christmas Day", + "2045-12-26": "Boxing Day", + "2046-01-01": "New Year's Day", + "2046-03-23": "Good Friday", + "2046-03-26": "Easter Monday", + "2046-05-07": "May Day", + "2046-05-09": "Liberation Day", + "2046-05-28": "Spring Bank Holiday", + "2046-08-27": "Late Summer Bank Holiday", + "2046-12-25": "Christmas Day", + "2046-12-26": "Boxing Day", + "2047-01-01": "New Year's Day", + "2047-04-12": "Good Friday", + "2047-04-15": "Easter Monday", + "2047-05-06": "May Day", + "2047-05-09": "Liberation Day", + "2047-05-27": "Spring Bank Holiday", + "2047-08-26": "Late Summer Bank Holiday", + "2047-12-25": "Christmas Day", + "2047-12-26": "Boxing Day", + "2048-01-01": "New Year's Day", + "2048-04-03": "Good Friday", + "2048-04-06": "Easter Monday", + "2048-05-04": "May Day", + "2048-05-09": "Liberation Day", + "2048-05-25": "Spring Bank Holiday", + "2048-08-31": "Late Summer Bank Holiday", + "2048-12-25": "Christmas Day", + "2048-12-26": "Boxing Day", + "2048-12-28": "Boxing Day (observed)", + "2049-01-01": "New Year's Day", + "2049-04-16": "Good Friday", + "2049-04-19": "Easter Monday", + "2049-05-03": "May Day", + "2049-05-31": "Spring Bank Holiday", + "2049-08-30": "Late Summer Bank Holiday", + "2049-12-25": "Christmas Day", + "2049-12-26": "Boxing Day", + "2049-12-27": "Christmas Day (observed)", + "2049-12-28": "Boxing Day (observed)", + "2050-01-01": "New Year's Day", + "2050-01-03": "New Year's Day (observed)", + "2050-04-08": "Good Friday", + "2050-04-11": "Easter Monday", + "2050-05-02": "May Day", + "2050-05-09": "Liberation Day", + "2050-05-30": "Spring Bank Holiday", + "2050-08-29": "Late Summer Bank Holiday", + "2050-12-25": "Christmas Day", + "2050-12-26": "Boxing Day", + "2050-12-27": "Christmas Day (observed)" +} diff --git a/tests/countries/test_jersey.py b/tests/countries/test_jersey.py new file mode 100644 index 000000000..b9d60f550 --- /dev/null +++ b/tests/countries/test_jersey.py @@ -0,0 +1,341 @@ +# python-holidays +# --------------- +# A fast, efficient Python library for generating country, province and state +# specific sets of holidays on the fly. It aims to make determining whether a +# specific date is a holiday as fast and flexible as possible. +# +# Authors: vacanza team (https://github.com/orgs/vacanza/teams) (c) 2023-2024 +# dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023 +# ryanss <ryanssdev@icloud.com> (c) 2014-2017 +# Website: https://github.com/vacanza/python-holidays +# License: MIT (see LICENSE file) + +from unittest import TestCase + +from holidays.countries.jersey import Jersey, JE, JEY +from tests.common import CommonCountryTests + + +class TestJE(CommonCountryTests, TestCase): + @classmethod + def setUpClass(cls): + super().setUpClass(Jersey, years=range(1952, 2070)) + + def test_country_aliases(self): + self.assertAliases(Jersey, JE, JEY) + + def test_no_holidays(self): + self.assertNoHolidays(Jersey(years=1951)) + + def test_special_holidays(self): + dt = ( + "1957-07-26", + "1977-06-07", + "1978-06-27", + "1981-07-29", + "1989-05-25", + "1999-12-31", + "2001-07-13", + "2002-06-03", + "2011-04-29", + "2012-06-05", + "2020-05-04", + "2020-05-08", + "2021-09-27", + "2022-06-03", + "2022-09-19", + "2023-05-08", + ) + dt_observed = ( + "1976-12-28", + "1977-01-03", + "1981-12-28", + "1982-12-28", + "1983-01-03", + "1987-12-28", + "1992-12-28", + "1993-12-28", + "1994-01-03", + "1998-12-28", + "1999-12-28", + "2000-01-03", + "2009-12-28", + ) + self.assertHoliday(dt, dt_observed) + self.assertNoNonObservedHoliday(dt_observed) + + def test_liberation_day(self): + name = "Liberation Day" + non_obs_date = ( + # Sunday, May 9th list 1952-2050 excl. 2010 (65th Anniversary) + "1954-05-09", + "1965-05-09", # 20th Anniversary special? need to check + "1971-05-09", + "1976-05-09", + "1982-05-09", + "1993-05-09", + "1999-05-09", + "2004-05-09", + "2021-05-09", + "2027-05-09", + "2032-05-09", + "2038-05-09", + "2049-05-09", + # Saturday, May 9th list 1952-2010 + "1953-05-09", + "1959-05-09", + "1964-05-09", + "1970-05-09", # 25th Anniversary special? need to check + "1981-05-09", + "1987-05-09", + "1992-05-09", + "1998-05-09", + "2009-05-09", + ) + self.assertNoHolidayName(name, non_obs_date) + self.assertHolidayName(name, range(2010, 2021)) + + def test_2010(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2010), + ("2010-01-01", "New Year's Day"), + ("2010-04-02", "Good Friday"), + ("2010-04-05", "Easter Monday"), + ("2010-05-03", "May Day"), + ("2010-05-09", "Liberation Day"), + ("2010-05-31", "Spring Bank Holiday"), + ("2010-08-30", "Late Summer Bank Holiday"), + ("2010-12-25", "Christmas Day"), + ("2010-12-26", "Boxing Day"), + ("2010-12-27", "Christmas Day (observed)"), + ("2010-12-28", "Boxing Day (observed)"), + ) + + def test_2011(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2011), + ("2011-01-01", "New Year's Day"), + ("2011-01-03", "New Year's Day (observed)"), + ("2011-04-22", "Good Friday"), + ("2011-04-25", "Easter Monday"), + ("2011-04-29", "Wedding of William and Catherine"), + ("2011-05-02", "May Day"), + ("2011-05-09", "Liberation Day"), + ("2011-05-30", "Spring Bank Holiday"), + ("2011-08-29", "Late Summer Bank Holiday"), + ("2011-12-25", "Christmas Day"), + ("2011-12-26", "Boxing Day"), + ("2011-12-27", "Christmas Day (observed)"), + ) + + def test_2012(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2012), + ("2012-01-01", "New Year's Day"), + ("2012-01-02", "New Year's Day (observed)"), + ("2012-04-06", "Good Friday"), + ("2012-04-09", "Easter Monday"), + ("2012-05-07", "May Day"), + ("2012-05-09", "Liberation Day"), + ("2012-06-04", "Spring Bank Holiday"), + ("2012-06-05", "Diamond Jubilee of Elizabeth II"), + ("2012-08-27", "Late Summer Bank Holiday"), + ("2012-12-25", "Christmas Day"), + ("2012-12-26", "Boxing Day"), + ) + + def test_2013(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2013), + ("2013-01-01", "New Year's Day"), + ("2013-03-29", "Good Friday"), + ("2013-04-01", "Easter Monday"), + ("2013-05-06", "May Day"), + ("2013-05-09", "Liberation Day"), + ("2013-05-27", "Spring Bank Holiday"), + ("2013-08-26", "Late Summer Bank Holiday"), + ("2013-12-25", "Christmas Day"), + ("2013-12-26", "Boxing Day"), + ) + + def test_2014(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2014), + ("2014-01-01", "New Year's Day"), + ("2014-04-18", "Good Friday"), + ("2014-04-21", "Easter Monday"), + ("2014-05-05", "May Day"), + ("2014-05-09", "Liberation Day"), + ("2014-05-26", "Spring Bank Holiday"), + ("2014-08-25", "Late Summer Bank Holiday"), + ("2014-12-25", "Christmas Day"), + ("2014-12-26", "Boxing Day"), + ) + + def test_2015(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2015), + ("2015-01-01", "New Year's Day"), + ("2015-04-03", "Good Friday"), + ("2015-04-06", "Easter Monday"), + ("2015-05-04", "May Day"), + ("2015-05-09", "Liberation Day"), + ("2015-05-25", "Spring Bank Holiday"), + ("2015-08-31", "Late Summer Bank Holiday"), + ("2015-12-25", "Christmas Day"), + ("2015-12-26", "Boxing Day"), + ("2015-12-28", "Boxing Day (observed)"), + ) + + def test_2016(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2016), + ("2016-01-01", "New Year's Day"), + ("2016-03-25", "Good Friday"), + ("2016-03-28", "Easter Monday"), + ("2016-05-02", "May Day"), + ("2016-05-09", "Liberation Day"), + ("2016-05-30", "Spring Bank Holiday"), + ("2016-08-29", "Late Summer Bank Holiday"), + ("2016-12-25", "Christmas Day"), + ("2016-12-26", "Boxing Day"), + ("2016-12-27", "Christmas Day (observed)"), + ) + + def test_2017(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2017), + ("2017-01-01", "New Year's Day"), + ("2017-01-02", "New Year's Day (observed)"), + ("2017-04-14", "Good Friday"), + ("2017-04-17", "Easter Monday"), + ("2017-05-01", "May Day"), + ("2017-05-09", "Liberation Day"), + ("2017-05-29", "Spring Bank Holiday"), + ("2017-08-28", "Late Summer Bank Holiday"), + ("2017-12-25", "Christmas Day"), + ("2017-12-26", "Boxing Day"), + ) + + def test_2018(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2018), + ("2018-01-01", "New Year's Day"), + ("2018-03-30", "Good Friday"), + ("2018-04-02", "Easter Monday"), + ("2018-05-07", "May Day"), + ("2018-05-09", "Liberation Day"), + ("2018-05-28", "Spring Bank Holiday"), + ("2018-08-27", "Late Summer Bank Holiday"), + ("2018-12-25", "Christmas Day"), + ("2018-12-26", "Boxing Day"), + ) + + def test_2019(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2019), + ("2019-01-01", "New Year's Day"), + ("2019-04-19", "Good Friday"), + ("2019-04-22", "Easter Monday"), + ("2019-05-06", "May Day"), + ("2019-05-09", "Liberation Day"), + ("2019-05-27", "Spring Bank Holiday"), + ("2019-08-26", "Late Summer Bank Holiday"), + ("2019-12-25", "Christmas Day"), + ("2019-12-26", "Boxing Day"), + ) + + def test_2020(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2020), + ("2020-01-01", "New Year's Day"), + ("2020-04-10", "Good Friday"), + ("2020-04-13", "Easter Monday"), + ("2020-05-04", "May Day"), + ("2020-05-08", "75th Anniversary of VE Day"), + ("2020-05-09", "Liberation Day"), + ("2020-05-25", "Spring Bank Holiday"), + ("2020-08-31", "Late Summer Bank Holiday"), + ("2020-12-25", "Christmas Day"), + ("2020-12-26", "Boxing Day"), + ("2020-12-28", "Boxing Day (observed)"), + ) + + def test_2021(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2021), + ("2021-01-01", "New Year's Day"), + ("2021-04-02", "Good Friday"), + ("2021-04-05", "Easter Monday"), + ("2021-05-03", "May Day"), + ("2021-05-31", "Spring Bank Holiday"), + ("2021-08-30", "Late Summer Bank Holiday"), + ("2021-09-27", "250th Anniversary of the 1769 Corn Riots"), + ("2021-12-25", "Christmas Day"), + ("2021-12-26", "Boxing Day"), + ("2021-12-27", "Christmas Day (observed)"), + ("2021-12-28", "Boxing Day (observed)"), + ) + + def test_2022(self): + # Wayback Machine of https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2022), + ("2022-01-01", "New Year's Day"), + ("2022-01-03", "New Year's Day (observed)"), + ("2022-04-15", "Good Friday"), + ("2022-04-18", "Easter Monday"), + ("2022-05-02", "May Day"), + ("2022-05-09", "Liberation Day"), + ("2022-06-02", "Spring Bank Holiday"), + ("2022-06-03", "Platinum Jubilee of Elizabeth II"), + ("2022-08-29", "Late Summer Bank Holiday"), + ("2022-09-19", "State Funeral of Queen Elizabeth II"), + ("2022-12-25", "Christmas Day"), + ("2022-12-26", "Boxing Day"), + ("2022-12-27", "Christmas Day (observed)"), + ) + + def test_2023(self): + # https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2023), + ("2023-01-01", "New Year's Day"), + ("2023-01-02", "New Year's Day (observed)"), + ("2023-04-07", "Good Friday"), + ("2023-04-10", "Easter Monday"), + ("2023-05-01", "May Day"), + ("2023-05-08", "Coronation of Charles III"), + ("2023-05-09", "Liberation Day"), + ("2023-05-29", "Spring Bank Holiday"), + ("2023-08-28", "Late Summer Bank Holiday"), + ("2023-12-25", "Christmas Day"), + ("2023-12-26", "Boxing Day"), + ) + + def test_2024(self): + # https://www.gov.je/Leisure/Events/WhatsOn/Pages/BankHolidayDates.aspx + self.assertHolidays( + Jersey(years=2024), + ("2024-01-01", "New Year's Day"), + ("2024-03-29", "Good Friday"), + ("2024-04-01", "Easter Monday"), + ("2024-05-06", "May Day"), + ("2024-05-09", "Liberation Day"), + ("2024-05-27", "Spring Bank Holiday"), + ("2024-08-26", "Late Summer Bank Holiday"), + ("2024-12-25", "Christmas Day"), + ("2024-12-26", "Boxing Day"), + )