diff --git a/holidays/countries/china.py b/holidays/countries/china.py index ca1228ab5..5ecb145b2 100644 --- a/holidays/countries/china.py +++ b/holidays/countries/china.py @@ -9,21 +9,20 @@ # Website: https://github.com/dr-prodigy/python-holidays # License: MIT (see LICENSE file) -from datetime import date -from datetime import timedelta as td from gettext import gettext as tr -from holidays.calendars.gregorian import JAN, MAY, SEP, OCT, DEC +from holidays.calendars.gregorian import JAN, FEB, MAR, APR, MAY, JUN, SEP, OCT, DEC from holidays.constants import HALF_DAY, PUBLIC from holidays.groups import ChineseCalendarHolidays, InternationalHolidays, StaticHolidays -from holidays.holiday_base import HolidayBase +from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NEXT_WORKDAY -class China(HolidayBase, ChineseCalendarHolidays, InternationalHolidays, StaticHolidays): +class China(ObservedHolidayBase, ChineseCalendarHolidays, InternationalHolidays, StaticHolidays): """ References: - https://en.wikipedia.org/wiki/Public_holidays_in_China - `Festivals and Public Holidays `_ + - `2024 `_ - `2023 `_ - `2022 `_ - `2021 `_ @@ -61,6 +60,8 @@ class China(HolidayBase, ChineseCalendarHolidays, InternationalHolidays, StaticH """ country = "CN" + # %s (Observed). + observed_label = tr("%s(观察日)") supported_categories = (PUBLIC, HALF_DAY) default_language = "zh_CN" supported_languages = ("en_US", "th", "zh_CN", "zh_TW") @@ -69,123 +70,30 @@ def __init__(self, *args, **kwargs): ChineseCalendarHolidays.__init__(self) InternationalHolidays.__init__(self) StaticHolidays.__init__(self, cls=ChinaStaticHolidays) + kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_WORKDAY) + kwargs.setdefault("observed_since", 2000) super().__init__(*args, **kwargs) - def _add_observed_one_off_holidays(self, dt: date): - """ - Based on 2002-2023 data, adds observance for one-off - holidays (New Year's Day, Tomb-Sweeping Day, ..., etc.) - - Monday -> TUE-WED (????-2007), [SAT]-[SUN] (2008-???) - - Tuesday -> WED-THU (????-2007), [SUN]-[MON] (2008-????) - - Wednesday -> None (????-2007), [MON]-[TUE] (2008-????) - - Thursday -> None (????-2007), FRI-SAT (2008-????) - - Friday -> SAT-SUN (????-????) - - Saturday -> [FRI]-SUN (2012-2019), SUN-MON (????-2011, 2020-????) - - Sunday -> MON-TUE (????-2007, 2012-2019), [SAT]-MON (2008-2011, 2020-????) - - '[DAY]' denotes that this applies prior to the input date, with 'DAY' as after. - """ - - if self._is_monday(dt): - if self._year <= 2007: - # TUE-WED - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - else: - # [SAT]-[SUN] - self._add_holiday(self[dt], dt + td(days=-2)) - self._add_holiday(self[dt], dt + td(days=-1)) - if self._year >= 2020 and dt == date(self._year, MAY, 1): - # 2 Extra Days for May Day >= 2020: - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - elif self._is_tuesday(dt): - if self._year <= 2007: - # WED-THU - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - else: - # [SUN]-[MON] - self._add_holiday(self[dt], dt + td(days=-2)) - self._add_holiday(self[dt], dt + td(days=-1)) - if self._year >= 2020 and dt == date(self._year, MAY, 1): - # 2 Extra Days for May Day >= 2020: - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - elif self._is_wednesday(dt) and self._year >= 2008: - # [MON]-[TUE] - self._add_holiday(self[dt], dt + td(days=-2)) - self._add_holiday(self[dt], dt + td(days=-1)) - if self._year >= 2020 and dt == date(self._year, MAY, 1): - # 2 Extra Days for May Day >= 2020: - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - elif self._is_thursday(dt) and self._year >= 2008: - # FRI-SAT - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - if self._year >= 2020 and dt == date(self._year, MAY, 1): - # 2 Extra Days for May Day >= 2020: - self._add_holiday(self[dt], dt + td(days=+3)) - self._add_holiday(self[dt], dt + td(days=+4)) - elif self._is_friday(dt): - # SAT-SUN - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - if self._year >= 2020 and dt == date(self._year, MAY, 1): - # 2 Extra Days for May Day >= 2020: - self._add_holiday(self[dt], dt + td(days=+3)) - self._add_holiday(self[dt], dt + td(days=+4)) - elif self._is_saturday(dt): - if self._year <= 2011 or self._year >= 2020: - # SUN-MON - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - if self._year >= 2020 and dt == date(self._year, MAY, 1): - # 2 Extra Days for May Day >= 2020: - self._add_holiday(self[dt], dt + td(days=+3)) - self._add_holiday(self[dt], dt + td(days=+4)) - else: - # [FRI]-SUN - self._add_holiday(self[dt], dt + td(days=-1)) - self._add_holiday(self[dt], dt + td(days=+1)) - elif self._is_sunday(dt): - if self._year <= 2007 or 2012 <= self._year <= 2019: - # MON-TUE - self._add_holiday(self[dt], dt + td(days=+1)) - self._add_holiday(self[dt], dt + td(days=+2)) - else: - # [SAT]-MON - self._add_holiday(self[dt], dt + td(days=-1)) - self._add_holiday(self[dt], dt + td(days=+1)) - if self._year >= 2020 and dt == date(self._year, MAY, 1): - # 2 Extra Days for May Day >= 2020: - self._add_holiday(self[dt], dt + td(days=+2)) - self._add_holiday(self[dt], dt + td(days=+3)) - def _populate_public_holidays(self): # Proclamation of the People's Republic of China on Oct 1, 1949. if self._year <= 1949: return None + dts_observed = set() + # 元旦 (simp.) / 新年 (trad.) # Status: In-Use (Statutory). # Jan 1 in 1949, 1999, 2007, and 2013 revision. # Consecutive Holidays are available from 2002, except in 2014/2016/2017/2018. # New Year's Day. - jan_1 = self._add_new_years_day(tr("元旦")) - - if ( - self.observed - and (2002 <= self._year <= 2015 or self._year >= 2020) - and self._year not in {2008, 2013, 2014, 2023} - ): - self._add_observed_one_off_holidays(jan_1) + dts_observed.add(self._add_new_years_day(tr("元旦"))) # 春节 # Status: In-Use (Statutory). # Day 1-3 of Chinese New Year in 1949, 1999, 2007, and 2013 revision. + # 2007 revision introduced New Year's Eve (农历除夕) instead of + # New Year's 3rd day; 2013 revision returned it back. # Spring Festival Golden Weekend # Checked with Official Notice from 2001-2023. @@ -193,18 +101,13 @@ def _populate_public_holidays(self): # Chinese New Year (Spring Festival). chinese_new_year = tr("春节") - self._add_chinese_new_years_day(chinese_new_year) - self._add_chinese_new_years_day_two(chinese_new_year) - self._add_chinese_new_years_day_three(chinese_new_year) - if self.observed and self._year >= 2000: - # Non-Statutory. - self._add_chinese_new_years_day_four(chinese_new_year) - self._add_chinese_new_years_day_five(chinese_new_year) - self._add_chinese_new_years_day_six(chinese_new_year) - if 2008 <= self._year <= 2013 or self._year >= 2015: - self._add_chinese_new_years_eve(chinese_new_year) - else: - self._add_chinese_new_years_day_seven(chinese_new_year) + dts_observed.add(self._add_chinese_new_years_day(chinese_new_year)) + dts_observed.add(self._add_chinese_new_years_day_two(chinese_new_year)) + if 2008 <= self._year <= 2013: + # Chinese New Year's Eve. + dts_observed.add(self._add_chinese_new_years_eve(tr("农历除夕"))) + else: + dts_observed.add(self._add_chinese_new_years_day_three(chinese_new_year)) # 劳动节 # Status: In-Use (Statutory). @@ -217,20 +120,10 @@ def _populate_public_holidays(self): # Labor Day. labor_day = tr("劳动节") - may_1 = self._add_labor_day(labor_day) + dts_observed.add(self._add_labor_day(labor_day)) if 2000 <= self._year <= 2007: - self._add_labor_day_two(labor_day) - self._add_labor_day_three(labor_day) - if self.observed: - # Non-Statutory. - self._add_holiday_may_4(labor_day) - self._add_holiday_may_5(labor_day) - self._add_holiday_may_6(labor_day) - self._add_holiday_may_7(labor_day) - elif self.observed and ( - 2008 <= self._year <= 2014 or self._year == 2018 or self._year >= 2020 - ): - self._add_observed_one_off_holidays(may_1) + dts_observed.add(self._add_labor_day_two(labor_day)) + dts_observed.add(self._add_labor_day_three(labor_day)) # 国庆节 # Status: In-Use (Statutory). @@ -242,17 +135,10 @@ def _populate_public_holidays(self): # National Day. national_day = tr("国庆节") - self._add_holiday_oct_1(national_day) - self._add_holiday_oct_2(national_day) + dts_observed.add(self._add_holiday_oct_1(national_day)) + dts_observed.add(self._add_holiday_oct_2(national_day)) if self._year >= 1999: - self._add_holiday_oct_3(national_day) - if self.observed and 2000 <= self._year != 2008: - # Non-Statutory. - self._add_holiday_oct_4(national_day) - self._add_holiday_oct_5(national_day) - self._add_holiday_oct_6(national_day) - if self._year != 2023: - self._add_holiday_oct_7(national_day) + dts_observed.add(self._add_holiday_oct_3(national_day)) if self._year >= 2008: # 清明节 @@ -261,11 +147,7 @@ def _populate_public_holidays(self): # Consecutive Holidays are available from 2008, except in 2014/2015/2016/2019. # Tomb-Sweeping Day. - qingming_festival = self._add_qingming_festival(tr("清明节")) - - if self.observed and self._year not in {2014, 2015, 2016, 2019, 2023}: - # Non-Statutory. - self._add_observed_one_off_holidays(qingming_festival) + dts_observed.add(self._add_qingming_festival(tr("清明节"))) # 端午节 # Status: In-Use (Statutory). @@ -274,10 +156,8 @@ def _populate_public_holidays(self): # Dragon Boat Festival. dragon_boat_festival = self._add_dragon_boat_festival(tr("端午节")) - - if self.observed and self._year not in {2014, 2015, 2018, 2019}: - # Non-Statutory. - self._add_observed_one_off_holidays(dragon_boat_festival) + if self._year != 2012: + dts_observed.add(dragon_boat_festival) # 中秋节 # Status: In-Use (Statutory). @@ -287,16 +167,11 @@ def _populate_public_holidays(self): # Mid-Autumn Festival. mid_autumn_festival = self._add_mid_autumn_festival(tr("中秋节")) + if self._year != 2015: + dts_observed.add(mid_autumn_festival) - if self.observed: - # Non-Statutory. - if mid_autumn_festival.month == OCT and 1 <= mid_autumn_festival.day <= 7: - self._add_holiday_oct_8(national_day) - elif mid_autumn_festival == date(self._year, SEP, 29): - self._add_holiday_sep_30(self[mid_autumn_festival]) - elif self._year not in {2010, 2012, 2014, 2015, 2018, 2019, 2030, 2050, 2096}: - # SEP 30's "no observance added" rule for 2012/2030/2050/2096 included. - self._add_observed_one_off_holidays(mid_autumn_festival) + if self.observed: + self._populate_observed(dts_observed, multiple=True) def _populate_half_day_holidays(self): # No in lieus are given for this category. @@ -326,51 +201,234 @@ class CHN(China): class ChinaStaticHolidays: - # Special Cases. - - # New Year's Day. - new_years_day_overflow = tr("元旦") + # Date format (see strftime() Format Codes). + substituted_date_format = tr("%Y-%m-%d") + # Day off (substituted from %s). + substituted_label = tr("休息日(%s日起取代)") - # National Day. - national_day_2008_golden_week = tr("国庆节") + # Dragon Boat Festival. + dragon_boat_festival = tr("端午节") # Mid-Autumn Festival. - mid_autumn_festival_2010_special = tr("中秋节") + mid_autumn_festival = tr("中秋节") + + # 70th Anniversary of the Victory of the Chinese People’s War of Resistance against + # Japanese Aggression and the World Anti-Fascist War. + victory_70_anniversary = tr("中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日") special_public_holidays = { + 2001: ( + (JAN, 29, JAN, 20), # Spring Festival + (JAN, 30, JAN, 21), # Spring Festival + (MAY, 4, APR, 28), # Labor Day + (MAY, 7, APR, 29), # Labor Day + (OCT, 4, SEP, 29), # National Day + (OCT, 5, SEP, 30), # National Day + ), + 2002: ( + (JAN, 2, DEC, 29, 2001), # New Year's Day + (JAN, 3, DEC, 30, 2001), # New Year's Day + (FEB, 15, FEB, 9), # Spring Festival + (FEB, 18, FEB, 10), # Spring Festival + (MAY, 6, APR, 27), # Labor Day + (MAY, 7, APR, 28), # Labor Day + (OCT, 4, SEP, 28), # National Day + (OCT, 7, SEP, 29), # National Day + ), + 2003: ( + (FEB, 6, FEB, 8), # Spring Festival + (FEB, 7, FEB, 9), # Spring Festival + (MAY, 6, APR, 26), # Labor Day + (MAY, 7, APR, 27), # Labor Day + (OCT, 6, SEP, 27), # National Day + (OCT, 7, SEP, 28), # National Day + ), + 2004: ( + (JAN, 27, JAN, 17), # Spring Festival + (JAN, 28, JAN, 18), # Spring Festival + (MAY, 6, MAY, 8), # Labor Day + (MAY, 7, MAY, 9), # Labor Day + (OCT, 6, OCT, 9), # National Day + (OCT, 7, OCT, 10), # National Day + ), + 2005: ( + (FEB, 14, FEB, 5), # Spring Festival + (FEB, 15, FEB, 6), # Spring Festival + (MAY, 5, APR, 30), # Labor Day + (MAY, 6, MAY, 8), # Labor Day + (OCT, 6, OCT, 8), # National Day + (OCT, 7, OCT, 9), # National Day + ), + 2006: ( + (JAN, 3, DEC, 31, 2005), # New Year's Day + (FEB, 2, JAN, 28), # Spring Festival + (FEB, 3, FEB, 5), # Spring Festival + (MAY, 4, APR, 29), # Labor Day + (MAY, 5, APR, 30), # Labor Day + (OCT, 5, SEP, 30), # National Day + (OCT, 6, OCT, 8), # National Day + ), 2007: ( - # 2007: Overflow from 2008 Notice. - (DEC, 30, new_years_day_overflow), - (DEC, 31, new_years_day_overflow), + (JAN, 2, DEC, 30, 2006), # New Year's Day + (JAN, 3, DEC, 31, 2006), # New Year's Day + (FEB, 22, FEB, 17), # Spring Festival + (FEB, 23, FEB, 25), # Spring Festival + (MAY, 4, APR, 28), # Labor Day + (MAY, 7, APR, 29), # Labor Day + (OCT, 4, SEP, 29), # National Day + (OCT, 5, SEP, 30), # National Day + (DEC, 31, DEC, 29), # New Year's Day ), 2008: ( - # 2008: weird National Day Golden Week pattern. - (SEP, 29, national_day_2008_golden_week), - (SEP, 30, national_day_2008_golden_week), - (OCT, 4, national_day_2008_golden_week), - (OCT, 5, national_day_2008_golden_week), + (FEB, 11, FEB, 2), # Spring Festival + (FEB, 12, FEB, 3), # Spring Festival + (MAY, 2, MAY, 4), # Labor Day + (SEP, 29, SEP, 27), # National Day + (SEP, 30, SEP, 28), # National Day + ), + 2009: ( + (JAN, 2, JAN, 4), # New Year's Day + (JAN, 29, JAN, 24), # Spring Festival + (JAN, 30, FEB, 1), # Spring Festival + (MAY, 29, MAY, 31), # Dragon Boat Festival + (OCT, 7, SEP, 27), # National Day + (OCT, 8, OCT, 10), # National Day ), 2010: ( - # 2010: doesn't fit with existing observed pattern. - (SEP, 23, mid_autumn_festival_2010_special), - (SEP, 24, mid_autumn_festival_2010_special), + (FEB, 18, FEB, 20), # Spring Festival + (FEB, 19, FEB, 21), # Spring Festival + (JUN, 14, JUN, 12), # Dragon Boat Festival + (JUN, 15, JUN, 13), # Dragon Boat Festival + (SEP, 23, SEP, 19), # Mid-Autumn Festival + (SEP, 24, SEP, 25), # Mid-Autumn Festival + (OCT, 6, SEP, 26), # National Day + (OCT, 7, OCT, 9), # National Day + ), + 2011: ( + (FEB, 7, JAN, 30), # Spring Festival + (FEB, 8, FEB, 12), # Spring Festival + (APR, 4, APR, 2), # Tomb-Sweeping Day + (OCT, 6, OCT, 8), # National Day + (OCT, 7, OCT, 9), # National Day + ), + 2012: ( + (JAN, 3, DEC, 31, 2011), # New Year's Day + (JAN, 26, JAN, 21), # Spring Festival + (JAN, 27, JAN, 29), # Spring Festival + (APR, 2, MAR, 31), # Tomb-Sweeping Day + (APR, 3, APR, 1), # Tomb-Sweeping Day + (APR, 30, APR, 28), # Labor Day + (OCT, 5, SEP, 29), # National Day ), 2013: ( - # 2013: doesn't fit with existing observed pattern. - (JAN, 2, new_years_day_overflow), - (JAN, 3, new_years_day_overflow), + (JAN, 2, JAN, 5), # New Year's Day + (JAN, 3, JAN, 6), # New Year's Day + (FEB, 14, FEB, 16), # Spring Festival + (FEB, 15, FEB, 17), # Spring Festival + (APR, 5, APR, 7), # Tomb-Sweeping Day + (APR, 29, APR, 27), # Labor Day + (APR, 30, APR, 28), # Labor Day + (JUN, 10, JUN, 8), # Dragon Boat Festival + (JUN, 11, JUN, 9), # Dragon Boat Festival + (SEP, 20, SEP, 22), # Mid-Autumn Festival + (OCT, 4, SEP, 29), # National Day + (OCT, 7, OCT, 12), # National Day + ), + 2014: ( + (FEB, 5, JAN, 26), # Spring Festival + (FEB, 6, FEB, 8), # Spring Festival + (MAY, 2, MAY, 4), # Labor Day + (OCT, 6, SEP, 28), # National Day + (OCT, 7, OCT, 11), # National Day + ), + 2015: ( + (JAN, 2, JAN, 4), # New Year's Day + (FEB, 18, FEB, 15), # Spring Festival + (FEB, 24, FEB, 28), # Spring Festival + (SEP, 3, victory_70_anniversary), + (SEP, 4, SEP, 6), # 70th Anniversary of the Victory + (OCT, 7, OCT, 10), # National Day + ), + 2016: ( + (FEB, 11, FEB, 6), # Spring Festival + (FEB, 12, FEB, 14), # Spring Festival + (JUN, 10, JUN, 12), # Dragon Boat Festival + (SEP, 16, SEP, 18), # Mid-Autumn Festival + (OCT, 6, OCT, 8), # National Day + (OCT, 7, OCT, 9), # National Day + ), + 2017: ( + (JAN, 27, JAN, 22), # Spring Festival + (FEB, 2, FEB, 4), # Spring Festival + (APR, 3, APR, 1), # Tomb-Sweeping Day + (MAY, 29, MAY, 27), # Dragon Boat Festival + (OCT, 6, SEP, 30), # National Day ), 2018: ( - # 2018: Overflow from 2019 Notice. - (DEC, 30, new_years_day_overflow), - (DEC, 31, new_years_day_overflow), + (FEB, 15, FEB, 11), # Spring Festival + (FEB, 21, FEB, 24), # Spring Festival + (APR, 6, APR, 8), # Tomb-Sweeping Day + (APR, 30, APR, 28), # Labor Day + (OCT, 4, SEP, 29), # National Day + (OCT, 5, SEP, 30), # National Day + (DEC, 31, DEC, 29), # New Year's Day + ), + 2019: ( + (FEB, 4, FEB, 2), # Spring Festival + (FEB, 8, FEB, 3), # Spring Festival + (OCT, 4, SEP, 29), # National Day + (OCT, 7, OCT, 12), # National Day + ), + 2020: ( + (JAN, 24, JAN, 19), # Spring Festival + (JAN, 30, FEB, 1), # Spring Festival + (MAY, 4, APR, 26), # Labor Day + (MAY, 5, MAY, 9), # Labor Day + (JUN, 26, JUN, 28), # Dragon Boat Festival + (OCT, 7, SEP, 27), # National Day + (OCT, 8, OCT, 10), # National Day + ), + 2021: ( + (FEB, 11, FEB, 7), # Spring Festival + (FEB, 17, FEB, 20), # Spring Festival + (MAY, 4, APR, 25), # Labor Day + (MAY, 5, MAY, 8), # Labor Day + (SEP, 20, SEP, 18), # Mid-Autumn Festival + (OCT, 6, SEP, 26), # National Day + (OCT, 7, OCT, 9), # National Day ), 2022: ( - # 2022: Overflow from 2023 Notice. - (DEC, 31, new_years_day_overflow), + (JAN, 31, JAN, 29), # Spring Festival + (FEB, 4, JAN, 30), # Spring Festival + (APR, 4, APR, 2), # Tomb-Sweeping Day + (MAY, 3, APR, 24), # Labor Day + (MAY, 4, MAY, 7), # Labor Day + (OCT, 6, OCT, 8), # National Day + (OCT, 7, OCT, 9), # National Day ), 2023: ( - # 2023: Overflow from 2023 Notice. - (JAN, 2, new_years_day_overflow), + (JAN, 26, JAN, 28), # Spring Festival + (JAN, 27, JAN, 29), # Spring Festival + (MAY, 2, APR, 23), # Labor Day + (MAY, 3, MAY, 6), # Labor Day + (JUN, 23, JUN, 25), # Dragon Boat Festival + (OCT, 5, OCT, 7), # National Day + (OCT, 6, OCT, 8), # National Day ), + 2024: ( + (FEB, 15, FEB, 4), # Spring Festival + (FEB, 16, FEB, 18), # Spring Festival + (APR, 5, APR, 7), # Tomb-Sweeping Day + (MAY, 2, APR, 28), # Labor Day + (MAY, 3, MAY, 11), # Labor Day + (SEP, 16, SEP, 14), # Mid-Autumn Festival + (OCT, 4, SEP, 29), # National Day + (OCT, 7, OCT, 12), # National Day + ), + } + + special_public_holidays_observed = { + 2012: (JUN, 22, dragon_boat_festival), # observed from Jun 23 + 2015: (OCT, 6, mid_autumn_festival), # observed from Sep 27 + 2020: (OCT, 6, mid_autumn_festival), # observed from Oct 1, overlap with National Day } diff --git a/holidays/groups/chinese.py b/holidays/groups/chinese.py index 870d0884f..fdfb70276 100644 --- a/holidays/groups/chinese.py +++ b/holidays/groups/chinese.py @@ -146,26 +146,6 @@ def _add_chinese_new_years_day_five(self, name) -> Optional[date]: name, self._chinese_calendar.lunar_new_year_date(self._year), days_delta=+4 ) - def _add_chinese_new_years_day_six(self, name) -> Optional[date]: - """ - Add Chinese New Year's Day Six. - - https://en.wikipedia.org/wiki/Chinese_New_Year - """ - return self._add_chinese_calendar_holiday( - name, self._chinese_calendar.lunar_new_year_date(self._year), days_delta=+5 - ) - - def _add_chinese_new_years_day_seven(self, name) -> Optional[date]: - """ - Add Chinese New Year's Day Seven. - - https://en.wikipedia.org/wiki/Chinese_New_Year - """ - return self._add_chinese_calendar_holiday( - name, self._chinese_calendar.lunar_new_year_date(self._year), days_delta=+6 - ) - def _add_qingming_festival(self, name) -> date: """ Add Qingming Festival (15th day after the Spring Equinox). diff --git a/holidays/locale/en_US/LC_MESSAGES/CN.po b/holidays/locale/en_US/LC_MESSAGES/CN.po index 95435241a..56cda3ffe 100644 --- a/holidays/locale/en_US/LC_MESSAGES/CN.po +++ b/holidays/locale/en_US/LC_MESSAGES/CN.po @@ -3,10 +3,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Python Holidays 0.35\n" +"Project-Id-Version: Python Holidays 0.41\n" "POT-Creation-Date: 2023-09-28 19:23+0700\n" -"PO-Revision-Date: 2023-09-28 19:49+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2023-12-29 19:02+0200\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Python Holidays localization team\n" "Language: en_US\n" "MIME-Version: 1.0\n" @@ -14,7 +14,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Lingua 4.15.0\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.4\n" + +#. %s (Observed). +#, c-format +msgid "%s(观察日)" +msgstr "%s (Observed)" #. New Year's Day. msgid "元旦" @@ -32,6 +37,10 @@ msgstr "Mid-Autumn Festival" msgid "春节" msgstr "Chinese New Year (Spring Festival)" +#. Chinese New Year's Eve. +msgid "农历除夕" +msgstr "Chinese New Year's Eve" + #. Labor Day. msgid "劳动节" msgstr "Labor Day" @@ -59,3 +68,20 @@ msgstr "Children's Day" #. Army Day. msgid "建军节" msgstr "Army Day" + +#. Date format (see strftime() Format Codes). +msgid "%Y-%m-%d" +msgstr "%m/%d/%Y" + +#. Day off (substituted from %s). +#, c-format +msgid "休息日(%s日起取代)" +msgstr "Day off (substituted from %s)" + +#. 70th Anniversary of the Victory of the Chinese People’s War of Resistance +#. against Japanese +#. Aggression and the World Anti-Fascist War. +msgid "中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日" +msgstr "" +"70th Anniversary of the Victory of the Chinese People’s War of Resistance " +"against Japanese Aggression and the World Anti-Fascist War" diff --git a/holidays/locale/th/LC_MESSAGES/CN.po b/holidays/locale/th/LC_MESSAGES/CN.po index 624febef3..8f8e30312 100644 --- a/holidays/locale/th/LC_MESSAGES/CN.po +++ b/holidays/locale/th/LC_MESSAGES/CN.po @@ -3,10 +3,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Python Holidays 0.35\n" +"Project-Id-Version: Python Holidays 0.41\n" "POT-Creation-Date: 2023-09-28 19:23+0700\n" -"PO-Revision-Date: 2023-09-28 19:57+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2023-12-30 17:46+0200\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Python Holidays localization team\n" "Language: th\n" "MIME-Version: 1.0\n" @@ -14,7 +14,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Lingua 4.15.0\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.4\n" + +#. %s (Observed). +#, c-format +msgid "%s(观察日)" +msgstr "ชดเชย%s" #. New Year's Day. msgid "元旦" @@ -32,6 +37,10 @@ msgstr "วันไหว้พระจันทร์" msgid "春节" msgstr "วันตรุษจีน" +#. Chinese New Year's Eve. +msgid "农历除夕" +msgstr "วันก่อนวันตรุษจีน" + #. Labor Day. msgid "劳动节" msgstr "วันแรงงาน" @@ -59,3 +68,18 @@ msgstr "วันเด็กสากล" #. Army Day. msgid "建军节" msgstr "วันสถาปนากองทัพปลดปล่อยประชาชนจีน" + +#. Date format (see strftime() Format Codes). +msgid "%Y-%m-%d" +msgstr "%d/%m/%Y" + +#. Day off (substituted from %s). +#, c-format +msgid "休息日(%s日起取代)" +msgstr "วันหยุด (แทน %s)" + +#. 70th Anniversary of the Victory of the Chinese People’s War of Resistance +#. against Japanese +#. Aggression and the World Anti-Fascist War. +msgid "中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日" +msgstr "ครบรอบ 70 ปีแห่งการได้รับชัยชนะจากสงครามต่อต้านญี่ปุ่นและลัทธิฟาสซิสต์โลก" diff --git a/holidays/locale/zh_CN/LC_MESSAGES/CN.po b/holidays/locale/zh_CN/LC_MESSAGES/CN.po index 1b08d96c7..9e903f4b6 100644 --- a/holidays/locale/zh_CN/LC_MESSAGES/CN.po +++ b/holidays/locale/zh_CN/LC_MESSAGES/CN.po @@ -3,10 +3,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Python Holidays 0.35\n" +"Project-Id-Version: Python Holidays 0.41\n" "POT-Creation-Date: 2023-09-28 19:23+0700\n" -"PO-Revision-Date: 2023-09-28 19:42+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2023-12-29 19:03+0200\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Python Holidays localization team\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" @@ -14,7 +14,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Lingua 4.15.0\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.4\n" + +#. %s (Observed). +#, c-format +msgid "%s(观察日)" +msgstr "" #. New Year's Day. msgid "元旦" @@ -32,6 +37,10 @@ msgstr "" msgid "春节" msgstr "" +#. Chinese New Year's Eve. +msgid "农历除夕" +msgstr "" + #. Labor Day. msgid "劳动节" msgstr "" @@ -59,3 +68,18 @@ msgstr "" #. Army Day. msgid "建军节" msgstr "" + +#. Date format (see strftime() Format Codes). +msgid "%Y-%m-%d" +msgstr "" + +#. Day off (substituted from %s). +#, c-format +msgid "休息日(%s日起取代)" +msgstr "" + +#. 70th Anniversary of the Victory of the Chinese People’s War of Resistance +#. against Japanese +#. Aggression and the World Anti-Fascist War. +msgid "中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日" +msgstr "" diff --git a/holidays/locale/zh_TW/LC_MESSAGES/CN.po b/holidays/locale/zh_TW/LC_MESSAGES/CN.po index f43adb3cc..d514082c6 100644 --- a/holidays/locale/zh_TW/LC_MESSAGES/CN.po +++ b/holidays/locale/zh_TW/LC_MESSAGES/CN.po @@ -3,10 +3,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Python Holidays 0.35\n" +"Project-Id-Version: Python Holidays 0.41\n" "POT-Creation-Date: 2023-09-28 19:23+0700\n" -"PO-Revision-Date: 2023-09-28 19:43+0700\n" -"Last-Translator: PPsyrius \n" +"PO-Revision-Date: 2023-12-29 19:04+0200\n" +"Last-Translator: ~Jhellico \n" "Language-Team: Python Holidays localization team\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" @@ -14,7 +14,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Lingua 4.15.0\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.4\n" + +#. %s (Observed). +#, c-format +msgid "%s(观察日)" +msgstr "%s(觀察日)" #. New Year's Day. msgid "元旦" @@ -32,6 +37,10 @@ msgstr "中秋節" msgid "春节" msgstr "春節" +#. Chinese New Year's Eve. +msgid "农历除夕" +msgstr "農曆除夕" + #. Labor Day. msgid "劳动节" msgstr "勞動節" @@ -59,3 +68,18 @@ msgstr "六一兒童節" #. Army Day. msgid "建军节" msgstr "建軍節" + +#. Date format (see strftime() Format Codes). +msgid "%Y-%m-%d" +msgstr "%Y-%m-%d" + +#. Day off (substituted from %s). +#, c-format +msgid "休息日(%s日起取代)" +msgstr "休息日(%s日起取代)" + +#. 70th Anniversary of the Victory of the Chinese People’s War of Resistance +#. against Japanese +#. Aggression and the World Anti-Fascist War. +msgid "中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日" +msgstr "中國人民抗日戰爭暨世界反法西斯戰爭勝利70週年紀念日" diff --git a/snapshots/countries/CN_COMMON.json b/snapshots/countries/CN_COMMON.json index 71cf0ed06..32a2adfe2 100644 --- a/snapshots/countries/CN_COMMON.json +++ b/snapshots/countries/CN_COMMON.json @@ -551,420 +551,346 @@ "1999-10-02": "National Day", "1999-10-03": "National Day", "2000-01-01": "New Year's Day", + "2000-01-03": "New Year's Day (Observed)", "2000-02-05": "Chinese New Year (Spring Festival)", "2000-02-06": "Chinese New Year (Spring Festival)", "2000-02-07": "Chinese New Year (Spring Festival)", - "2000-02-08": "Chinese New Year (Spring Festival)", - "2000-02-09": "Chinese New Year (Spring Festival)", - "2000-02-10": "Chinese New Year (Spring Festival)", - "2000-02-11": "Chinese New Year (Spring Festival)", + "2000-02-08": "Chinese New Year (Spring Festival) (Observed)", + "2000-02-09": "Chinese New Year (Spring Festival) (Observed)", "2000-03-08": "International Women's Day", "2000-05-01": "Labor Day", "2000-05-02": "Labor Day", "2000-05-03": "Labor Day", - "2000-05-04": "Labor Day; Youth Day", - "2000-05-05": "Labor Day", - "2000-05-06": "Labor Day", - "2000-05-07": "Labor Day", + "2000-05-04": "Youth Day", "2000-06-01": "Children's Day", "2000-08-01": "Army Day", "2000-10-01": "National Day", "2000-10-02": "National Day", "2000-10-03": "National Day", - "2000-10-04": "National Day", - "2000-10-05": "National Day", - "2000-10-06": "National Day", - "2000-10-07": "National Day", + "2000-10-04": "National Day (Observed)", "2001-01-01": "New Year's Day", "2001-01-24": "Chinese New Year (Spring Festival)", "2001-01-25": "Chinese New Year (Spring Festival)", "2001-01-26": "Chinese New Year (Spring Festival)", - "2001-01-27": "Chinese New Year (Spring Festival)", - "2001-01-28": "Chinese New Year (Spring Festival)", - "2001-01-29": "Chinese New Year (Spring Festival)", - "2001-01-30": "Chinese New Year (Spring Festival)", + "2001-01-29": "Day off (substituted from 01/20/2001)", + "2001-01-30": "Day off (substituted from 01/21/2001)", "2001-03-08": "International Women's Day", "2001-05-01": "Labor Day", "2001-05-02": "Labor Day", "2001-05-03": "Labor Day", - "2001-05-04": "Labor Day; Youth Day", - "2001-05-05": "Labor Day", - "2001-05-06": "Labor Day", - "2001-05-07": "Labor Day", + "2001-05-04": "Day off (substituted from 04/28/2001); Youth Day", + "2001-05-07": "Day off (substituted from 04/29/2001)", "2001-06-01": "Children's Day", "2001-08-01": "Army Day", "2001-10-01": "National Day", "2001-10-02": "National Day", "2001-10-03": "National Day", - "2001-10-04": "National Day", - "2001-10-05": "National Day", - "2001-10-06": "National Day", - "2001-10-07": "National Day", + "2001-10-04": "Day off (substituted from 09/29/2001)", + "2001-10-05": "Day off (substituted from 09/30/2001)", "2002-01-01": "New Year's Day", - "2002-01-02": "New Year's Day", - "2002-01-03": "New Year's Day", + "2002-01-02": "Day off (substituted from 12/29/2001)", + "2002-01-03": "Day off (substituted from 12/30/2001)", "2002-02-12": "Chinese New Year (Spring Festival)", "2002-02-13": "Chinese New Year (Spring Festival)", "2002-02-14": "Chinese New Year (Spring Festival)", - "2002-02-15": "Chinese New Year (Spring Festival)", - "2002-02-16": "Chinese New Year (Spring Festival)", - "2002-02-17": "Chinese New Year (Spring Festival)", - "2002-02-18": "Chinese New Year (Spring Festival)", + "2002-02-15": "Day off (substituted from 02/09/2002)", + "2002-02-18": "Day off (substituted from 02/10/2002)", "2002-03-08": "International Women's Day", "2002-05-01": "Labor Day", "2002-05-02": "Labor Day", "2002-05-03": "Labor Day", - "2002-05-04": "Labor Day; Youth Day", - "2002-05-05": "Labor Day", - "2002-05-06": "Labor Day", - "2002-05-07": "Labor Day", + "2002-05-04": "Youth Day", + "2002-05-06": "Day off (substituted from 04/27/2002)", + "2002-05-07": "Day off (substituted from 04/28/2002)", "2002-06-01": "Children's Day", "2002-08-01": "Army Day", "2002-10-01": "National Day", "2002-10-02": "National Day", "2002-10-03": "National Day", - "2002-10-04": "National Day", - "2002-10-05": "National Day", - "2002-10-06": "National Day", - "2002-10-07": "National Day", + "2002-10-04": "Day off (substituted from 09/28/2002)", + "2002-10-07": "Day off (substituted from 09/29/2002)", "2003-01-01": "New Year's Day", "2003-02-01": "Chinese New Year (Spring Festival)", "2003-02-02": "Chinese New Year (Spring Festival)", "2003-02-03": "Chinese New Year (Spring Festival)", - "2003-02-04": "Chinese New Year (Spring Festival)", - "2003-02-05": "Chinese New Year (Spring Festival)", - "2003-02-06": "Chinese New Year (Spring Festival)", - "2003-02-07": "Chinese New Year (Spring Festival)", + "2003-02-04": "Chinese New Year (Spring Festival) (Observed)", + "2003-02-05": "Chinese New Year (Spring Festival) (Observed)", + "2003-02-06": "Day off (substituted from 02/08/2003)", + "2003-02-07": "Day off (substituted from 02/09/2003)", "2003-03-08": "International Women's Day", "2003-05-01": "Labor Day", "2003-05-02": "Labor Day", "2003-05-03": "Labor Day", - "2003-05-04": "Labor Day; Youth Day", - "2003-05-05": "Labor Day", - "2003-05-06": "Labor Day", - "2003-05-07": "Labor Day", + "2003-05-04": "Youth Day", + "2003-05-05": "Labor Day (Observed)", + "2003-05-06": "Day off (substituted from 04/26/2003)", + "2003-05-07": "Day off (substituted from 04/27/2003)", "2003-06-01": "Children's Day", "2003-08-01": "Army Day", "2003-10-01": "National Day", "2003-10-02": "National Day", "2003-10-03": "National Day", - "2003-10-04": "National Day", - "2003-10-05": "National Day", - "2003-10-06": "National Day", - "2003-10-07": "National Day", + "2003-10-06": "Day off (substituted from 09/27/2003)", + "2003-10-07": "Day off (substituted from 09/28/2003)", "2004-01-01": "New Year's Day", "2004-01-22": "Chinese New Year (Spring Festival)", "2004-01-23": "Chinese New Year (Spring Festival)", "2004-01-24": "Chinese New Year (Spring Festival)", - "2004-01-25": "Chinese New Year (Spring Festival)", - "2004-01-26": "Chinese New Year (Spring Festival)", - "2004-01-27": "Chinese New Year (Spring Festival)", - "2004-01-28": "Chinese New Year (Spring Festival)", + "2004-01-26": "Chinese New Year (Spring Festival) (Observed)", + "2004-01-27": "Day off (substituted from 01/17/2004)", + "2004-01-28": "Day off (substituted from 01/18/2004)", "2004-03-08": "International Women's Day", "2004-05-01": "Labor Day", "2004-05-02": "Labor Day", "2004-05-03": "Labor Day", - "2004-05-04": "Labor Day; Youth Day", - "2004-05-05": "Labor Day", - "2004-05-06": "Labor Day", - "2004-05-07": "Labor Day", + "2004-05-04": "Youth Day", + "2004-05-05": "Labor Day (Observed)", + "2004-05-06": "Day off (substituted from 05/08/2004); Labor Day (Observed)", + "2004-05-07": "Day off (substituted from 05/09/2004)", "2004-06-01": "Children's Day", "2004-08-01": "Army Day", "2004-10-01": "National Day", "2004-10-02": "National Day", "2004-10-03": "National Day", - "2004-10-04": "National Day", - "2004-10-05": "National Day", - "2004-10-06": "National Day", - "2004-10-07": "National Day", + "2004-10-04": "National Day (Observed)", + "2004-10-05": "National Day (Observed)", + "2004-10-06": "Day off (substituted from 10/09/2004)", + "2004-10-07": "Day off (substituted from 10/10/2004)", "2005-01-01": "New Year's Day", - "2005-01-02": "New Year's Day", - "2005-01-03": "New Year's Day", + "2005-01-03": "New Year's Day (Observed)", "2005-02-09": "Chinese New Year (Spring Festival)", "2005-02-10": "Chinese New Year (Spring Festival)", "2005-02-11": "Chinese New Year (Spring Festival)", - "2005-02-12": "Chinese New Year (Spring Festival)", - "2005-02-13": "Chinese New Year (Spring Festival)", - "2005-02-14": "Chinese New Year (Spring Festival)", - "2005-02-15": "Chinese New Year (Spring Festival)", + "2005-02-14": "Day off (substituted from 02/05/2005)", + "2005-02-15": "Day off (substituted from 02/06/2005)", "2005-03-08": "International Women's Day", "2005-05-01": "Labor Day", "2005-05-02": "Labor Day", "2005-05-03": "Labor Day", - "2005-05-04": "Labor Day; Youth Day", - "2005-05-05": "Labor Day", - "2005-05-06": "Labor Day", - "2005-05-07": "Labor Day", + "2005-05-04": "Youth Day", + "2005-05-05": "Day off (substituted from 04/30/2005); Labor Day (Observed)", + "2005-05-06": "Day off (substituted from 05/08/2005)", "2005-06-01": "Children's Day", "2005-08-01": "Army Day", "2005-10-01": "National Day", "2005-10-02": "National Day", "2005-10-03": "National Day", - "2005-10-04": "National Day", - "2005-10-05": "National Day", - "2005-10-06": "National Day", - "2005-10-07": "National Day", + "2005-10-04": "National Day (Observed)", + "2005-10-05": "National Day (Observed)", + "2005-10-06": "Day off (substituted from 10/08/2005)", + "2005-10-07": "Day off (substituted from 10/09/2005)", "2006-01-01": "New Year's Day", - "2006-01-02": "New Year's Day", - "2006-01-03": "New Year's Day", + "2006-01-02": "New Year's Day (Observed)", + "2006-01-03": "Day off (substituted from 12/31/2005)", "2006-01-29": "Chinese New Year (Spring Festival)", "2006-01-30": "Chinese New Year (Spring Festival)", "2006-01-31": "Chinese New Year (Spring Festival)", - "2006-02-01": "Chinese New Year (Spring Festival)", - "2006-02-02": "Chinese New Year (Spring Festival)", - "2006-02-03": "Chinese New Year (Spring Festival)", - "2006-02-04": "Chinese New Year (Spring Festival)", + "2006-02-01": "Chinese New Year (Spring Festival) (Observed)", + "2006-02-02": "Day off (substituted from 01/28/2006)", + "2006-02-03": "Day off (substituted from 02/05/2006)", "2006-03-08": "International Women's Day", "2006-05-01": "Labor Day", "2006-05-02": "Labor Day", "2006-05-03": "Labor Day", - "2006-05-04": "Labor Day; Youth Day", - "2006-05-05": "Labor Day", - "2006-05-06": "Labor Day", - "2006-05-07": "Labor Day", + "2006-05-04": "Day off (substituted from 04/29/2006); Youth Day", + "2006-05-05": "Day off (substituted from 04/30/2006)", "2006-06-01": "Children's Day", "2006-08-01": "Army Day", "2006-10-01": "National Day", "2006-10-02": "National Day", "2006-10-03": "National Day", - "2006-10-04": "National Day", - "2006-10-05": "National Day", - "2006-10-06": "National Day", - "2006-10-07": "National Day", + "2006-10-04": "National Day (Observed)", + "2006-10-05": "Day off (substituted from 09/30/2006)", + "2006-10-06": "Day off (substituted from 10/08/2006)", "2007-01-01": "New Year's Day", - "2007-01-02": "New Year's Day", - "2007-01-03": "New Year's Day", + "2007-01-02": "Day off (substituted from 12/30/2006)", + "2007-01-03": "Day off (substituted from 12/31/2006)", "2007-02-18": "Chinese New Year (Spring Festival)", "2007-02-19": "Chinese New Year (Spring Festival)", "2007-02-20": "Chinese New Year (Spring Festival)", - "2007-02-21": "Chinese New Year (Spring Festival)", - "2007-02-22": "Chinese New Year (Spring Festival)", - "2007-02-23": "Chinese New Year (Spring Festival)", - "2007-02-24": "Chinese New Year (Spring Festival)", + "2007-02-21": "Chinese New Year (Spring Festival) (Observed)", + "2007-02-22": "Day off (substituted from 02/17/2007)", + "2007-02-23": "Day off (substituted from 02/25/2007)", "2007-03-08": "International Women's Day", "2007-05-01": "Labor Day", "2007-05-02": "Labor Day", "2007-05-03": "Labor Day", - "2007-05-04": "Labor Day; Youth Day", - "2007-05-05": "Labor Day", - "2007-05-06": "Labor Day", - "2007-05-07": "Labor Day", + "2007-05-04": "Day off (substituted from 04/28/2007); Youth Day", + "2007-05-07": "Day off (substituted from 04/29/2007)", "2007-06-01": "Children's Day", "2007-08-01": "Army Day", "2007-10-01": "National Day", "2007-10-02": "National Day", "2007-10-03": "National Day", - "2007-10-04": "National Day", - "2007-10-05": "National Day", - "2007-10-06": "National Day", - "2007-10-07": "National Day", - "2007-12-30": "New Year's Day", - "2007-12-31": "New Year's Day", + "2007-10-04": "Day off (substituted from 09/29/2007)", + "2007-10-05": "Day off (substituted from 09/30/2007)", + "2007-12-31": "Day off (substituted from 12/29/2007)", "2008-01-01": "New Year's Day", - "2008-02-06": "Chinese New Year (Spring Festival)", + "2008-02-06": "Chinese New Year's Eve", "2008-02-07": "Chinese New Year (Spring Festival)", "2008-02-08": "Chinese New Year (Spring Festival)", - "2008-02-09": "Chinese New Year (Spring Festival)", - "2008-02-10": "Chinese New Year (Spring Festival)", - "2008-02-11": "Chinese New Year (Spring Festival)", - "2008-02-12": "Chinese New Year (Spring Festival)", + "2008-02-11": "Day off (substituted from 02/02/2008)", + "2008-02-12": "Day off (substituted from 02/03/2008)", "2008-03-08": "International Women's Day", "2008-04-04": "Tomb-Sweeping Day", - "2008-04-05": "Tomb-Sweeping Day", - "2008-04-06": "Tomb-Sweeping Day", "2008-05-01": "Labor Day", - "2008-05-02": "Labor Day", - "2008-05-03": "Labor Day", + "2008-05-02": "Day off (substituted from 05/04/2008)", "2008-05-04": "Youth Day", "2008-06-01": "Children's Day", - "2008-06-07": "Dragon Boat Festival", "2008-06-08": "Dragon Boat Festival", - "2008-06-09": "Dragon Boat Festival", + "2008-06-09": "Dragon Boat Festival (Observed)", "2008-08-01": "Army Day", - "2008-09-13": "Mid-Autumn Festival", "2008-09-14": "Mid-Autumn Festival", - "2008-09-15": "Mid-Autumn Festival", - "2008-09-29": "National Day", - "2008-09-30": "National Day", + "2008-09-15": "Mid-Autumn Festival (Observed)", + "2008-09-29": "Day off (substituted from 09/27/2008)", + "2008-09-30": "Day off (substituted from 09/28/2008)", "2008-10-01": "National Day", "2008-10-02": "National Day", "2008-10-03": "National Day", - "2008-10-04": "National Day", - "2008-10-05": "National Day", "2009-01-01": "New Year's Day", - "2009-01-02": "New Year's Day", - "2009-01-03": "New Year's Day", - "2009-01-25": "Chinese New Year (Spring Festival)", + "2009-01-02": "Day off (substituted from 01/04/2009)", + "2009-01-25": "Chinese New Year's Eve", "2009-01-26": "Chinese New Year (Spring Festival)", "2009-01-27": "Chinese New Year (Spring Festival)", - "2009-01-28": "Chinese New Year (Spring Festival)", - "2009-01-29": "Chinese New Year (Spring Festival)", - "2009-01-30": "Chinese New Year (Spring Festival)", - "2009-01-31": "Chinese New Year (Spring Festival)", + "2009-01-28": "Chinese New Year's Eve (Observed)", + "2009-01-29": "Day off (substituted from 01/24/2009)", + "2009-01-30": "Day off (substituted from 02/01/2009)", "2009-03-08": "International Women's Day", "2009-04-04": "Tomb-Sweeping Day", - "2009-04-05": "Tomb-Sweeping Day", - "2009-04-06": "Tomb-Sweeping Day", + "2009-04-06": "Tomb-Sweeping Day (Observed)", "2009-05-01": "Labor Day", - "2009-05-02": "Labor Day", - "2009-05-03": "Labor Day", "2009-05-04": "Youth Day", "2009-05-28": "Dragon Boat Festival", - "2009-05-29": "Dragon Boat Festival", - "2009-05-30": "Dragon Boat Festival", + "2009-05-29": "Day off (substituted from 05/31/2009)", "2009-06-01": "Children's Day", "2009-08-01": "Army Day", "2009-10-01": "National Day", "2009-10-02": "National Day", "2009-10-03": "Mid-Autumn Festival; National Day", - "2009-10-04": "National Day", - "2009-10-05": "National Day", - "2009-10-06": "National Day", - "2009-10-07": "National Day", - "2009-10-08": "National Day", + "2009-10-05": "Mid-Autumn Festival (Observed)", + "2009-10-06": "National Day (Observed)", + "2009-10-07": "Day off (substituted from 09/27/2009)", + "2009-10-08": "Day off (substituted from 10/10/2009)", "2010-01-01": "New Year's Day", - "2010-01-02": "New Year's Day", - "2010-01-03": "New Year's Day", - "2010-02-13": "Chinese New Year (Spring Festival)", + "2010-02-13": "Chinese New Year's Eve", "2010-02-14": "Chinese New Year (Spring Festival)", "2010-02-15": "Chinese New Year (Spring Festival)", - "2010-02-16": "Chinese New Year (Spring Festival)", - "2010-02-17": "Chinese New Year (Spring Festival)", - "2010-02-18": "Chinese New Year (Spring Festival)", - "2010-02-19": "Chinese New Year (Spring Festival)", + "2010-02-16": "Chinese New Year's Eve (Observed)", + "2010-02-17": "Chinese New Year (Spring Festival) (Observed)", + "2010-02-18": "Day off (substituted from 02/20/2010)", + "2010-02-19": "Day off (substituted from 02/21/2010)", "2010-03-08": "International Women's Day", - "2010-04-03": "Tomb-Sweeping Day", - "2010-04-04": "Tomb-Sweeping Day", "2010-04-05": "Tomb-Sweeping Day", "2010-05-01": "Labor Day", - "2010-05-02": "Labor Day", - "2010-05-03": "Labor Day", + "2010-05-03": "Labor Day (Observed)", "2010-05-04": "Youth Day", "2010-06-01": "Children's Day", - "2010-06-14": "Dragon Boat Festival", - "2010-06-15": "Dragon Boat Festival", + "2010-06-14": "Day off (substituted from 06/12/2010)", + "2010-06-15": "Day off (substituted from 06/13/2010)", "2010-06-16": "Dragon Boat Festival", "2010-08-01": "Army Day", "2010-09-22": "Mid-Autumn Festival", - "2010-09-23": "Mid-Autumn Festival", - "2010-09-24": "Mid-Autumn Festival", + "2010-09-23": "Day off (substituted from 09/19/2010)", + "2010-09-24": "Day off (substituted from 09/25/2010)", "2010-10-01": "National Day", "2010-10-02": "National Day", "2010-10-03": "National Day", - "2010-10-04": "National Day", - "2010-10-05": "National Day", - "2010-10-06": "National Day", - "2010-10-07": "National Day", + "2010-10-04": "National Day (Observed)", + "2010-10-05": "National Day (Observed)", + "2010-10-06": "Day off (substituted from 09/26/2010)", + "2010-10-07": "Day off (substituted from 10/09/2010)", "2011-01-01": "New Year's Day", - "2011-01-02": "New Year's Day", - "2011-01-03": "New Year's Day", - "2011-02-02": "Chinese New Year (Spring Festival)", + "2011-01-03": "New Year's Day (Observed)", + "2011-02-02": "Chinese New Year's Eve", "2011-02-03": "Chinese New Year (Spring Festival)", "2011-02-04": "Chinese New Year (Spring Festival)", - "2011-02-05": "Chinese New Year (Spring Festival)", - "2011-02-06": "Chinese New Year (Spring Festival)", - "2011-02-07": "Chinese New Year (Spring Festival)", - "2011-02-08": "Chinese New Year (Spring Festival)", + "2011-02-07": "Day off (substituted from 01/30/2011)", + "2011-02-08": "Day off (substituted from 02/12/2011)", "2011-03-08": "International Women's Day", - "2011-04-03": "Tomb-Sweeping Day", - "2011-04-04": "Tomb-Sweeping Day", + "2011-04-04": "Day off (substituted from 04/02/2011)", "2011-04-05": "Tomb-Sweeping Day", - "2011-04-30": "Labor Day", "2011-05-01": "Labor Day", - "2011-05-02": "Labor Day", + "2011-05-02": "Labor Day (Observed)", "2011-05-04": "Youth Day", "2011-06-01": "Children's Day", - "2011-06-04": "Dragon Boat Festival", - "2011-06-05": "Dragon Boat Festival", "2011-06-06": "Dragon Boat Festival", "2011-08-01": "Army Day", - "2011-09-10": "Mid-Autumn Festival", - "2011-09-11": "Mid-Autumn Festival", "2011-09-12": "Mid-Autumn Festival", "2011-10-01": "National Day", "2011-10-02": "National Day", "2011-10-03": "National Day", - "2011-10-04": "National Day", - "2011-10-05": "National Day", - "2011-10-06": "National Day", - "2011-10-07": "National Day", + "2011-10-04": "National Day (Observed)", + "2011-10-05": "National Day (Observed)", + "2011-10-06": "Day off (substituted from 10/08/2011)", + "2011-10-07": "Day off (substituted from 10/09/2011)", "2012-01-01": "New Year's Day", - "2012-01-02": "New Year's Day", - "2012-01-03": "New Year's Day", - "2012-01-22": "Chinese New Year (Spring Festival)", + "2012-01-02": "New Year's Day (Observed)", + "2012-01-03": "Day off (substituted from 12/31/2011)", + "2012-01-22": "Chinese New Year's Eve", "2012-01-23": "Chinese New Year (Spring Festival)", "2012-01-24": "Chinese New Year (Spring Festival)", - "2012-01-25": "Chinese New Year (Spring Festival)", - "2012-01-26": "Chinese New Year (Spring Festival)", - "2012-01-27": "Chinese New Year (Spring Festival)", - "2012-01-28": "Chinese New Year (Spring Festival)", + "2012-01-25": "Chinese New Year's Eve (Observed)", + "2012-01-26": "Day off (substituted from 01/21/2012)", + "2012-01-27": "Day off (substituted from 01/29/2012)", "2012-03-08": "International Women's Day", - "2012-04-02": "Tomb-Sweeping Day", - "2012-04-03": "Tomb-Sweeping Day", + "2012-04-02": "Day off (substituted from 03/31/2012)", + "2012-04-03": "Day off (substituted from 04/01/2012)", "2012-04-04": "Tomb-Sweeping Day", - "2012-04-29": "Labor Day", - "2012-04-30": "Labor Day", + "2012-04-30": "Day off (substituted from 04/28/2012)", "2012-05-01": "Labor Day", "2012-05-04": "Youth Day", "2012-06-01": "Children's Day", - "2012-06-22": "Dragon Boat Festival", + "2012-06-22": "Dragon Boat Festival (Observed)", "2012-06-23": "Dragon Boat Festival", - "2012-06-24": "Dragon Boat Festival", "2012-08-01": "Army Day", "2012-09-30": "Mid-Autumn Festival", "2012-10-01": "National Day", "2012-10-02": "National Day", "2012-10-03": "National Day", - "2012-10-04": "National Day", - "2012-10-05": "National Day", - "2012-10-06": "National Day", - "2012-10-07": "National Day", + "2012-10-04": "Mid-Autumn Festival (Observed)", + "2012-10-05": "Day off (substituted from 09/29/2012)", "2013-01-01": "New Year's Day", - "2013-01-02": "New Year's Day", - "2013-01-03": "New Year's Day", - "2013-02-09": "Chinese New Year (Spring Festival)", + "2013-01-02": "Day off (substituted from 01/05/2013)", + "2013-01-03": "Day off (substituted from 01/06/2013)", + "2013-02-09": "Chinese New Year's Eve", "2013-02-10": "Chinese New Year (Spring Festival)", "2013-02-11": "Chinese New Year (Spring Festival)", - "2013-02-12": "Chinese New Year (Spring Festival)", - "2013-02-13": "Chinese New Year (Spring Festival)", - "2013-02-14": "Chinese New Year (Spring Festival)", - "2013-02-15": "Chinese New Year (Spring Festival)", + "2013-02-12": "Chinese New Year's Eve (Observed)", + "2013-02-13": "Chinese New Year (Spring Festival) (Observed)", + "2013-02-14": "Day off (substituted from 02/16/2013)", + "2013-02-15": "Day off (substituted from 02/17/2013)", "2013-03-08": "International Women's Day", "2013-04-04": "Tomb-Sweeping Day", - "2013-04-05": "Tomb-Sweeping Day", - "2013-04-06": "Tomb-Sweeping Day", - "2013-04-29": "Labor Day", - "2013-04-30": "Labor Day", + "2013-04-05": "Day off (substituted from 04/07/2013)", + "2013-04-29": "Day off (substituted from 04/27/2013)", + "2013-04-30": "Day off (substituted from 04/28/2013)", "2013-05-01": "Labor Day", "2013-05-04": "Youth Day", "2013-06-01": "Children's Day", - "2013-06-10": "Dragon Boat Festival", - "2013-06-11": "Dragon Boat Festival", + "2013-06-10": "Day off (substituted from 06/08/2013)", + "2013-06-11": "Day off (substituted from 06/09/2013)", "2013-06-12": "Dragon Boat Festival", "2013-08-01": "Army Day", "2013-09-19": "Mid-Autumn Festival", - "2013-09-20": "Mid-Autumn Festival", - "2013-09-21": "Mid-Autumn Festival", + "2013-09-20": "Day off (substituted from 09/22/2013)", "2013-10-01": "National Day", "2013-10-02": "National Day", "2013-10-03": "National Day", - "2013-10-04": "National Day", - "2013-10-05": "National Day", - "2013-10-06": "National Day", - "2013-10-07": "National Day", + "2013-10-04": "Day off (substituted from 09/29/2013)", + "2013-10-07": "Day off (substituted from 10/12/2013)", "2014-01-01": "New Year's Day", "2014-01-31": "Chinese New Year (Spring Festival)", "2014-02-01": "Chinese New Year (Spring Festival)", "2014-02-02": "Chinese New Year (Spring Festival)", - "2014-02-03": "Chinese New Year (Spring Festival)", - "2014-02-04": "Chinese New Year (Spring Festival)", - "2014-02-05": "Chinese New Year (Spring Festival)", - "2014-02-06": "Chinese New Year (Spring Festival)", + "2014-02-03": "Chinese New Year (Spring Festival) (Observed)", + "2014-02-04": "Chinese New Year (Spring Festival) (Observed)", + "2014-02-05": "Day off (substituted from 01/26/2014)", + "2014-02-06": "Day off (substituted from 02/08/2014)", "2014-03-08": "International Women's Day", "2014-04-05": "Tomb-Sweeping Day", + "2014-04-07": "Tomb-Sweeping Day (Observed)", "2014-05-01": "Labor Day", - "2014-05-02": "Labor Day", - "2014-05-03": "Labor Day", + "2014-05-02": "Day off (substituted from 05/04/2014)", "2014-05-04": "Youth Day", "2014-06-01": "Children's Day", "2014-06-02": "Dragon Boat Festival", @@ -973,103 +899,94 @@ "2014-10-01": "National Day", "2014-10-02": "National Day", "2014-10-03": "National Day", - "2014-10-04": "National Day", - "2014-10-05": "National Day", - "2014-10-06": "National Day", - "2014-10-07": "National Day", + "2014-10-06": "Day off (substituted from 09/28/2014)", + "2014-10-07": "Day off (substituted from 10/11/2014)", "2015-01-01": "New Year's Day", - "2015-01-02": "New Year's Day", - "2015-01-03": "New Year's Day", - "2015-02-18": "Chinese New Year (Spring Festival)", + "2015-01-02": "Day off (substituted from 01/04/2015)", + "2015-02-18": "Day off (substituted from 02/15/2015)", "2015-02-19": "Chinese New Year (Spring Festival)", "2015-02-20": "Chinese New Year (Spring Festival)", "2015-02-21": "Chinese New Year (Spring Festival)", - "2015-02-22": "Chinese New Year (Spring Festival)", - "2015-02-23": "Chinese New Year (Spring Festival)", - "2015-02-24": "Chinese New Year (Spring Festival)", + "2015-02-23": "Chinese New Year (Spring Festival) (Observed)", + "2015-02-24": "Day off (substituted from 02/28/2015)", "2015-03-08": "International Women's Day", "2015-04-05": "Tomb-Sweeping Day", + "2015-04-06": "Tomb-Sweeping Day (Observed)", "2015-05-01": "Labor Day", "2015-05-04": "Youth Day", "2015-06-01": "Children's Day", "2015-06-20": "Dragon Boat Festival", + "2015-06-22": "Dragon Boat Festival (Observed)", "2015-08-01": "Army Day", + "2015-09-03": "70th Anniversary of the Victory of the Chinese People\u2019s War of Resistance against Japanese Aggression and the World Anti-Fascist War", + "2015-09-04": "Day off (substituted from 09/06/2015)", "2015-09-27": "Mid-Autumn Festival", "2015-10-01": "National Day", "2015-10-02": "National Day", "2015-10-03": "National Day", - "2015-10-04": "National Day", - "2015-10-05": "National Day", - "2015-10-06": "National Day", - "2015-10-07": "National Day", + "2015-10-05": "National Day (Observed)", + "2015-10-06": "Mid-Autumn Festival (Observed)", + "2015-10-07": "Day off (substituted from 10/10/2015)", "2016-01-01": "New Year's Day", - "2016-02-07": "Chinese New Year (Spring Festival)", "2016-02-08": "Chinese New Year (Spring Festival)", "2016-02-09": "Chinese New Year (Spring Festival)", "2016-02-10": "Chinese New Year (Spring Festival)", - "2016-02-11": "Chinese New Year (Spring Festival)", - "2016-02-12": "Chinese New Year (Spring Festival)", - "2016-02-13": "Chinese New Year (Spring Festival)", + "2016-02-11": "Day off (substituted from 02/06/2016)", + "2016-02-12": "Day off (substituted from 02/14/2016)", "2016-03-08": "International Women's Day", "2016-04-04": "Tomb-Sweeping Day", "2016-05-01": "Labor Day", + "2016-05-02": "Labor Day (Observed)", "2016-05-04": "Youth Day", "2016-06-01": "Children's Day", "2016-06-09": "Dragon Boat Festival", - "2016-06-10": "Dragon Boat Festival", - "2016-06-11": "Dragon Boat Festival", + "2016-06-10": "Day off (substituted from 06/12/2016)", "2016-08-01": "Army Day", "2016-09-15": "Mid-Autumn Festival", - "2016-09-16": "Mid-Autumn Festival", - "2016-09-17": "Mid-Autumn Festival", + "2016-09-16": "Day off (substituted from 09/18/2016)", "2016-10-01": "National Day", "2016-10-02": "National Day", "2016-10-03": "National Day", - "2016-10-04": "National Day", - "2016-10-05": "National Day", - "2016-10-06": "National Day", - "2016-10-07": "National Day", + "2016-10-04": "National Day (Observed)", + "2016-10-05": "National Day (Observed)", + "2016-10-06": "Day off (substituted from 10/08/2016)", + "2016-10-07": "Day off (substituted from 10/09/2016)", "2017-01-01": "New Year's Day", - "2017-01-27": "Chinese New Year (Spring Festival)", + "2017-01-02": "New Year's Day (Observed)", + "2017-01-27": "Day off (substituted from 01/22/2017)", "2017-01-28": "Chinese New Year (Spring Festival)", "2017-01-29": "Chinese New Year (Spring Festival)", "2017-01-30": "Chinese New Year (Spring Festival)", - "2017-01-31": "Chinese New Year (Spring Festival)", - "2017-02-01": "Chinese New Year (Spring Festival)", - "2017-02-02": "Chinese New Year (Spring Festival)", + "2017-01-31": "Chinese New Year (Spring Festival) (Observed)", + "2017-02-01": "Chinese New Year (Spring Festival) (Observed)", + "2017-02-02": "Day off (substituted from 02/04/2017)", "2017-03-08": "International Women's Day", - "2017-04-02": "Tomb-Sweeping Day", - "2017-04-03": "Tomb-Sweeping Day", + "2017-04-03": "Day off (substituted from 04/01/2017)", "2017-04-04": "Tomb-Sweeping Day", "2017-05-01": "Labor Day", "2017-05-04": "Youth Day", - "2017-05-28": "Dragon Boat Festival", - "2017-05-29": "Dragon Boat Festival", + "2017-05-29": "Day off (substituted from 05/27/2017)", "2017-05-30": "Dragon Boat Festival", "2017-06-01": "Children's Day", "2017-08-01": "Army Day", "2017-10-01": "National Day", "2017-10-02": "National Day", "2017-10-03": "National Day", - "2017-10-04": "Mid-Autumn Festival; National Day", - "2017-10-05": "National Day", - "2017-10-06": "National Day", - "2017-10-07": "National Day", - "2017-10-08": "National Day", + "2017-10-04": "Mid-Autumn Festival", + "2017-10-05": "National Day (Observed)", + "2017-10-06": "Day off (substituted from 09/30/2017)", "2018-01-01": "New Year's Day", - "2018-02-15": "Chinese New Year (Spring Festival)", + "2018-02-15": "Day off (substituted from 02/11/2018)", "2018-02-16": "Chinese New Year (Spring Festival)", "2018-02-17": "Chinese New Year (Spring Festival)", "2018-02-18": "Chinese New Year (Spring Festival)", - "2018-02-19": "Chinese New Year (Spring Festival)", - "2018-02-20": "Chinese New Year (Spring Festival)", - "2018-02-21": "Chinese New Year (Spring Festival)", + "2018-02-19": "Chinese New Year (Spring Festival) (Observed)", + "2018-02-20": "Chinese New Year (Spring Festival) (Observed)", + "2018-02-21": "Day off (substituted from 02/24/2018)", "2018-03-08": "International Women's Day", "2018-04-05": "Tomb-Sweeping Day", - "2018-04-06": "Tomb-Sweeping Day", - "2018-04-07": "Tomb-Sweeping Day", - "2018-04-29": "Labor Day", - "2018-04-30": "Labor Day", + "2018-04-06": "Day off (substituted from 04/08/2018)", + "2018-04-30": "Day off (substituted from 04/28/2018)", "2018-05-01": "Labor Day", "2018-05-04": "Youth Day", "2018-06-01": "Children's Day", @@ -1079,20 +996,15 @@ "2018-10-01": "National Day", "2018-10-02": "National Day", "2018-10-03": "National Day", - "2018-10-04": "National Day", - "2018-10-05": "National Day", - "2018-10-06": "National Day", - "2018-10-07": "National Day", - "2018-12-30": "New Year's Day", - "2018-12-31": "New Year's Day", + "2018-10-04": "Day off (substituted from 09/29/2018)", + "2018-10-05": "Day off (substituted from 09/30/2018)", + "2018-12-31": "Day off (substituted from 12/29/2018)", "2019-01-01": "New Year's Day", - "2019-02-04": "Chinese New Year (Spring Festival)", + "2019-02-04": "Day off (substituted from 02/02/2019)", "2019-02-05": "Chinese New Year (Spring Festival)", "2019-02-06": "Chinese New Year (Spring Festival)", "2019-02-07": "Chinese New Year (Spring Festival)", - "2019-02-08": "Chinese New Year (Spring Festival)", - "2019-02-09": "Chinese New Year (Spring Festival)", - "2019-02-10": "Chinese New Year (Spring Festival)", + "2019-02-08": "Day off (substituted from 02/03/2019)", "2019-03-08": "International Women's Day", "2019-04-05": "Tomb-Sweeping Day", "2019-05-01": "Labor Day", @@ -1104,1017 +1016,600 @@ "2019-10-01": "National Day", "2019-10-02": "National Day", "2019-10-03": "National Day", - "2019-10-04": "National Day", - "2019-10-05": "National Day", - "2019-10-06": "National Day", - "2019-10-07": "National Day", + "2019-10-04": "Day off (substituted from 09/29/2019)", + "2019-10-07": "Day off (substituted from 10/12/2019)", "2020-01-01": "New Year's Day", - "2020-01-24": "Chinese New Year (Spring Festival)", + "2020-01-24": "Day off (substituted from 01/19/2020)", "2020-01-25": "Chinese New Year (Spring Festival)", "2020-01-26": "Chinese New Year (Spring Festival)", "2020-01-27": "Chinese New Year (Spring Festival)", - "2020-01-28": "Chinese New Year (Spring Festival)", - "2020-01-29": "Chinese New Year (Spring Festival)", - "2020-01-30": "Chinese New Year (Spring Festival)", + "2020-01-28": "Chinese New Year (Spring Festival) (Observed)", + "2020-01-29": "Chinese New Year (Spring Festival) (Observed)", + "2020-01-30": "Day off (substituted from 02/01/2020)", "2020-03-08": "International Women's Day", "2020-04-04": "Tomb-Sweeping Day", - "2020-04-05": "Tomb-Sweeping Day", - "2020-04-06": "Tomb-Sweeping Day", + "2020-04-06": "Tomb-Sweeping Day (Observed)", "2020-05-01": "Labor Day", - "2020-05-02": "Labor Day", - "2020-05-03": "Labor Day", - "2020-05-04": "Labor Day; Youth Day", - "2020-05-05": "Labor Day", + "2020-05-04": "Day off (substituted from 04/26/2020); Youth Day", + "2020-05-05": "Day off (substituted from 05/09/2020)", "2020-06-01": "Children's Day", "2020-06-25": "Dragon Boat Festival", - "2020-06-26": "Dragon Boat Festival", - "2020-06-27": "Dragon Boat Festival", + "2020-06-26": "Day off (substituted from 06/28/2020)", "2020-08-01": "Army Day", "2020-10-01": "Mid-Autumn Festival; National Day", "2020-10-02": "National Day", "2020-10-03": "National Day", - "2020-10-04": "National Day", - "2020-10-05": "National Day", - "2020-10-06": "National Day", - "2020-10-07": "National Day", - "2020-10-08": "National Day", + "2020-10-05": "National Day (Observed)", + "2020-10-06": "Mid-Autumn Festival (Observed)", + "2020-10-07": "Day off (substituted from 09/27/2020)", + "2020-10-08": "Day off (substituted from 10/10/2020)", "2021-01-01": "New Year's Day", - "2021-01-02": "New Year's Day", - "2021-01-03": "New Year's Day", - "2021-02-11": "Chinese New Year (Spring Festival)", + "2021-02-11": "Day off (substituted from 02/07/2021)", "2021-02-12": "Chinese New Year (Spring Festival)", "2021-02-13": "Chinese New Year (Spring Festival)", "2021-02-14": "Chinese New Year (Spring Festival)", - "2021-02-15": "Chinese New Year (Spring Festival)", - "2021-02-16": "Chinese New Year (Spring Festival)", - "2021-02-17": "Chinese New Year (Spring Festival)", + "2021-02-15": "Chinese New Year (Spring Festival) (Observed)", + "2021-02-16": "Chinese New Year (Spring Festival) (Observed)", + "2021-02-17": "Day off (substituted from 02/20/2021)", "2021-03-08": "International Women's Day", - "2021-04-03": "Tomb-Sweeping Day", "2021-04-04": "Tomb-Sweeping Day", - "2021-04-05": "Tomb-Sweeping Day", + "2021-04-05": "Tomb-Sweeping Day (Observed)", "2021-05-01": "Labor Day", - "2021-05-02": "Labor Day", - "2021-05-03": "Labor Day", - "2021-05-04": "Labor Day; Youth Day", - "2021-05-05": "Labor Day", + "2021-05-03": "Labor Day (Observed)", + "2021-05-04": "Day off (substituted from 04/25/2021); Youth Day", + "2021-05-05": "Day off (substituted from 05/08/2021)", "2021-06-01": "Children's Day", - "2021-06-12": "Dragon Boat Festival", - "2021-06-13": "Dragon Boat Festival", "2021-06-14": "Dragon Boat Festival", "2021-08-01": "Army Day", - "2021-09-19": "Mid-Autumn Festival", - "2021-09-20": "Mid-Autumn Festival", + "2021-09-20": "Day off (substituted from 09/18/2021)", "2021-09-21": "Mid-Autumn Festival", "2021-10-01": "National Day", "2021-10-02": "National Day", "2021-10-03": "National Day", - "2021-10-04": "National Day", - "2021-10-05": "National Day", - "2021-10-06": "National Day", - "2021-10-07": "National Day", + "2021-10-04": "National Day (Observed)", + "2021-10-05": "National Day (Observed)", + "2021-10-06": "Day off (substituted from 09/26/2021)", + "2021-10-07": "Day off (substituted from 10/09/2021)", "2022-01-01": "New Year's Day", - "2022-01-02": "New Year's Day", - "2022-01-03": "New Year's Day", - "2022-01-31": "Chinese New Year (Spring Festival)", + "2022-01-03": "New Year's Day (Observed)", + "2022-01-31": "Day off (substituted from 01/29/2022)", "2022-02-01": "Chinese New Year (Spring Festival)", "2022-02-02": "Chinese New Year (Spring Festival)", "2022-02-03": "Chinese New Year (Spring Festival)", - "2022-02-04": "Chinese New Year (Spring Festival)", - "2022-02-05": "Chinese New Year (Spring Festival)", - "2022-02-06": "Chinese New Year (Spring Festival)", + "2022-02-04": "Day off (substituted from 01/30/2022)", "2022-03-08": "International Women's Day", - "2022-04-03": "Tomb-Sweeping Day", - "2022-04-04": "Tomb-Sweeping Day", + "2022-04-04": "Day off (substituted from 04/02/2022)", "2022-04-05": "Tomb-Sweeping Day", - "2022-04-30": "Labor Day", "2022-05-01": "Labor Day", - "2022-05-02": "Labor Day", - "2022-05-03": "Labor Day", - "2022-05-04": "Labor Day; Youth Day", + "2022-05-02": "Labor Day (Observed)", + "2022-05-03": "Day off (substituted from 04/24/2022)", + "2022-05-04": "Day off (substituted from 05/07/2022); Youth Day", "2022-06-01": "Children's Day", "2022-06-03": "Dragon Boat Festival", - "2022-06-04": "Dragon Boat Festival", - "2022-06-05": "Dragon Boat Festival", "2022-08-01": "Army Day", "2022-09-10": "Mid-Autumn Festival", - "2022-09-11": "Mid-Autumn Festival", - "2022-09-12": "Mid-Autumn Festival", + "2022-09-12": "Mid-Autumn Festival (Observed)", "2022-10-01": "National Day", "2022-10-02": "National Day", "2022-10-03": "National Day", - "2022-10-04": "National Day", - "2022-10-05": "National Day", - "2022-10-06": "National Day", - "2022-10-07": "National Day", - "2022-12-31": "New Year's Day", + "2022-10-04": "National Day (Observed)", + "2022-10-05": "National Day (Observed)", + "2022-10-06": "Day off (substituted from 10/08/2022)", + "2022-10-07": "Day off (substituted from 10/09/2022)", "2023-01-01": "New Year's Day", - "2023-01-02": "New Year's Day", - "2023-01-21": "Chinese New Year (Spring Festival)", + "2023-01-02": "New Year's Day (Observed)", "2023-01-22": "Chinese New Year (Spring Festival)", "2023-01-23": "Chinese New Year (Spring Festival)", "2023-01-24": "Chinese New Year (Spring Festival)", - "2023-01-25": "Chinese New Year (Spring Festival)", - "2023-01-26": "Chinese New Year (Spring Festival)", - "2023-01-27": "Chinese New Year (Spring Festival)", + "2023-01-25": "Chinese New Year (Spring Festival) (Observed)", + "2023-01-26": "Day off (substituted from 01/28/2023)", + "2023-01-27": "Day off (substituted from 01/29/2023)", "2023-03-08": "International Women's Day", "2023-04-05": "Tomb-Sweeping Day", - "2023-04-29": "Labor Day", - "2023-04-30": "Labor Day", "2023-05-01": "Labor Day", - "2023-05-02": "Labor Day", - "2023-05-03": "Labor Day", + "2023-05-02": "Day off (substituted from 04/23/2023)", + "2023-05-03": "Day off (substituted from 05/06/2023)", "2023-05-04": "Youth Day", "2023-06-01": "Children's Day", "2023-06-22": "Dragon Boat Festival", - "2023-06-23": "Dragon Boat Festival", - "2023-06-24": "Dragon Boat Festival", + "2023-06-23": "Day off (substituted from 06/25/2023)", "2023-08-01": "Army Day", "2023-09-29": "Mid-Autumn Festival", - "2023-09-30": "Mid-Autumn Festival", "2023-10-01": "National Day", "2023-10-02": "National Day", "2023-10-03": "National Day", - "2023-10-04": "National Day", - "2023-10-05": "National Day", - "2023-10-06": "National Day", + "2023-10-04": "National Day (Observed)", + "2023-10-05": "Day off (substituted from 10/07/2023)", + "2023-10-06": "Day off (substituted from 10/08/2023)", "2024-01-01": "New Year's Day", - "2024-02-09": "Chinese New Year (Spring Festival)", "2024-02-10": "Chinese New Year (Spring Festival)", "2024-02-11": "Chinese New Year (Spring Festival)", "2024-02-12": "Chinese New Year (Spring Festival)", - "2024-02-13": "Chinese New Year (Spring Festival)", - "2024-02-14": "Chinese New Year (Spring Festival)", - "2024-02-15": "Chinese New Year (Spring Festival)", + "2024-02-13": "Chinese New Year (Spring Festival) (Observed)", + "2024-02-14": "Chinese New Year (Spring Festival) (Observed)", + "2024-02-15": "Day off (substituted from 02/04/2024)", + "2024-02-16": "Day off (substituted from 02/18/2024)", "2024-03-08": "International Women's Day", "2024-04-04": "Tomb-Sweeping Day", - "2024-04-05": "Tomb-Sweeping Day", - "2024-04-06": "Tomb-Sweeping Day", - "2024-04-29": "Labor Day", - "2024-04-30": "Labor Day", + "2024-04-05": "Day off (substituted from 04/07/2024)", "2024-05-01": "Labor Day", - "2024-05-02": "Labor Day", - "2024-05-03": "Labor Day", + "2024-05-02": "Day off (substituted from 04/28/2024)", + "2024-05-03": "Day off (substituted from 05/11/2024)", "2024-05-04": "Youth Day", "2024-06-01": "Children's Day", - "2024-06-08": "Dragon Boat Festival", - "2024-06-09": "Dragon Boat Festival", "2024-06-10": "Dragon Boat Festival", "2024-08-01": "Army Day", - "2024-09-15": "Mid-Autumn Festival", - "2024-09-16": "Mid-Autumn Festival", + "2024-09-16": "Day off (substituted from 09/14/2024)", "2024-09-17": "Mid-Autumn Festival", "2024-10-01": "National Day", "2024-10-02": "National Day", "2024-10-03": "National Day", - "2024-10-04": "National Day", - "2024-10-05": "National Day", - "2024-10-06": "National Day", - "2024-10-07": "National Day", + "2024-10-04": "Day off (substituted from 09/29/2024)", + "2024-10-07": "Day off (substituted from 10/12/2024)", "2025-01-01": "New Year's Day", - "2025-01-28": "Chinese New Year (Spring Festival)", "2025-01-29": "Chinese New Year (Spring Festival)", "2025-01-30": "Chinese New Year (Spring Festival)", "2025-01-31": "Chinese New Year (Spring Festival)", - "2025-02-01": "Chinese New Year (Spring Festival)", - "2025-02-02": "Chinese New Year (Spring Festival)", - "2025-02-03": "Chinese New Year (Spring Festival)", "2025-03-08": "International Women's Day", "2025-04-04": "Tomb-Sweeping Day", - "2025-04-05": "Tomb-Sweeping Day", - "2025-04-06": "Tomb-Sweeping Day", "2025-05-01": "Labor Day", - "2025-05-02": "Labor Day", - "2025-05-03": "Labor Day", - "2025-05-04": "Labor Day; Youth Day", - "2025-05-05": "Labor Day", + "2025-05-04": "Youth Day", "2025-05-31": "Dragon Boat Festival", - "2025-06-01": "Children's Day; Dragon Boat Festival", - "2025-06-02": "Dragon Boat Festival", + "2025-06-01": "Children's Day", + "2025-06-02": "Dragon Boat Festival (Observed)", "2025-08-01": "Army Day", "2025-10-01": "National Day", "2025-10-02": "National Day", "2025-10-03": "National Day", - "2025-10-04": "National Day", - "2025-10-05": "National Day", - "2025-10-06": "Mid-Autumn Festival; National Day", - "2025-10-07": "National Day", - "2025-10-08": "National Day", + "2025-10-06": "Mid-Autumn Festival", "2026-01-01": "New Year's Day", - "2026-01-02": "New Year's Day", - "2026-01-03": "New Year's Day", - "2026-02-16": "Chinese New Year (Spring Festival)", "2026-02-17": "Chinese New Year (Spring Festival)", "2026-02-18": "Chinese New Year (Spring Festival)", "2026-02-19": "Chinese New Year (Spring Festival)", - "2026-02-20": "Chinese New Year (Spring Festival)", - "2026-02-21": "Chinese New Year (Spring Festival)", - "2026-02-22": "Chinese New Year (Spring Festival)", "2026-03-08": "International Women's Day", - "2026-04-04": "Tomb-Sweeping Day", "2026-04-05": "Tomb-Sweeping Day", - "2026-04-06": "Tomb-Sweeping Day", + "2026-04-06": "Tomb-Sweeping Day (Observed)", "2026-05-01": "Labor Day", - "2026-05-02": "Labor Day", - "2026-05-03": "Labor Day", - "2026-05-04": "Labor Day; Youth Day", - "2026-05-05": "Labor Day", + "2026-05-04": "Youth Day", "2026-06-01": "Children's Day", "2026-06-19": "Dragon Boat Festival", - "2026-06-20": "Dragon Boat Festival", - "2026-06-21": "Dragon Boat Festival", "2026-08-01": "Army Day", "2026-09-25": "Mid-Autumn Festival", - "2026-09-26": "Mid-Autumn Festival", - "2026-09-27": "Mid-Autumn Festival", "2026-10-01": "National Day", "2026-10-02": "National Day", "2026-10-03": "National Day", - "2026-10-04": "National Day", - "2026-10-05": "National Day", - "2026-10-06": "National Day", - "2026-10-07": "National Day", + "2026-10-05": "National Day (Observed)", "2027-01-01": "New Year's Day", - "2027-01-02": "New Year's Day", - "2027-01-03": "New Year's Day", - "2027-02-05": "Chinese New Year (Spring Festival)", "2027-02-06": "Chinese New Year (Spring Festival)", "2027-02-07": "Chinese New Year (Spring Festival)", "2027-02-08": "Chinese New Year (Spring Festival)", - "2027-02-09": "Chinese New Year (Spring Festival)", - "2027-02-10": "Chinese New Year (Spring Festival)", - "2027-02-11": "Chinese New Year (Spring Festival)", + "2027-02-09": "Chinese New Year (Spring Festival) (Observed)", + "2027-02-10": "Chinese New Year (Spring Festival) (Observed)", "2027-03-08": "International Women's Day", - "2027-04-03": "Tomb-Sweeping Day", - "2027-04-04": "Tomb-Sweeping Day", "2027-04-05": "Tomb-Sweeping Day", "2027-05-01": "Labor Day", - "2027-05-02": "Labor Day", - "2027-05-03": "Labor Day", - "2027-05-04": "Labor Day; Youth Day", - "2027-05-05": "Labor Day", + "2027-05-03": "Labor Day (Observed)", + "2027-05-04": "Youth Day", "2027-06-01": "Children's Day", - "2027-06-07": "Dragon Boat Festival", - "2027-06-08": "Dragon Boat Festival", "2027-06-09": "Dragon Boat Festival", "2027-08-01": "Army Day", - "2027-09-13": "Mid-Autumn Festival", - "2027-09-14": "Mid-Autumn Festival", "2027-09-15": "Mid-Autumn Festival", "2027-10-01": "National Day", "2027-10-02": "National Day", "2027-10-03": "National Day", - "2027-10-04": "National Day", - "2027-10-05": "National Day", - "2027-10-06": "National Day", - "2027-10-07": "National Day", + "2027-10-04": "National Day (Observed)", + "2027-10-05": "National Day (Observed)", "2028-01-01": "New Year's Day", - "2028-01-02": "New Year's Day", - "2028-01-03": "New Year's Day", - "2028-01-25": "Chinese New Year (Spring Festival)", + "2028-01-03": "New Year's Day (Observed)", "2028-01-26": "Chinese New Year (Spring Festival)", "2028-01-27": "Chinese New Year (Spring Festival)", "2028-01-28": "Chinese New Year (Spring Festival)", - "2028-01-29": "Chinese New Year (Spring Festival)", - "2028-01-30": "Chinese New Year (Spring Festival)", - "2028-01-31": "Chinese New Year (Spring Festival)", "2028-03-08": "International Women's Day", - "2028-04-02": "Tomb-Sweeping Day", - "2028-04-03": "Tomb-Sweeping Day", "2028-04-04": "Tomb-Sweeping Day", - "2028-04-29": "Labor Day", - "2028-04-30": "Labor Day", "2028-05-01": "Labor Day", - "2028-05-02": "Labor Day", - "2028-05-03": "Labor Day", "2028-05-04": "Youth Day", - "2028-05-27": "Dragon Boat Festival", "2028-05-28": "Dragon Boat Festival", - "2028-05-29": "Dragon Boat Festival", + "2028-05-29": "Dragon Boat Festival (Observed)", "2028-06-01": "Children's Day", "2028-08-01": "Army Day", "2028-10-01": "National Day", "2028-10-02": "National Day", "2028-10-03": "Mid-Autumn Festival; National Day", - "2028-10-04": "National Day", - "2028-10-05": "National Day", - "2028-10-06": "National Day", - "2028-10-07": "National Day", - "2028-10-08": "National Day", + "2028-10-04": "National Day (Observed)", "2029-01-01": "New Year's Day", - "2029-02-12": "Chinese New Year (Spring Festival)", "2029-02-13": "Chinese New Year (Spring Festival)", "2029-02-14": "Chinese New Year (Spring Festival)", "2029-02-15": "Chinese New Year (Spring Festival)", - "2029-02-16": "Chinese New Year (Spring Festival)", - "2029-02-17": "Chinese New Year (Spring Festival)", - "2029-02-18": "Chinese New Year (Spring Festival)", "2029-03-08": "International Women's Day", - "2029-04-02": "Tomb-Sweeping Day", - "2029-04-03": "Tomb-Sweeping Day", "2029-04-04": "Tomb-Sweeping Day", - "2029-04-29": "Labor Day", - "2029-04-30": "Labor Day", "2029-05-01": "Labor Day", - "2029-05-02": "Labor Day", - "2029-05-03": "Labor Day", "2029-05-04": "Youth Day", "2029-06-01": "Children's Day", "2029-06-16": "Dragon Boat Festival", - "2029-06-17": "Dragon Boat Festival", - "2029-06-18": "Dragon Boat Festival", + "2029-06-18": "Dragon Boat Festival (Observed)", "2029-08-01": "Army Day", "2029-09-22": "Mid-Autumn Festival", - "2029-09-23": "Mid-Autumn Festival", - "2029-09-24": "Mid-Autumn Festival", + "2029-09-24": "Mid-Autumn Festival (Observed)", "2029-10-01": "National Day", "2029-10-02": "National Day", "2029-10-03": "National Day", - "2029-10-04": "National Day", - "2029-10-05": "National Day", - "2029-10-06": "National Day", - "2029-10-07": "National Day", "2030-01-01": "New Year's Day", - "2030-02-02": "Chinese New Year (Spring Festival)", "2030-02-03": "Chinese New Year (Spring Festival)", "2030-02-04": "Chinese New Year (Spring Festival)", "2030-02-05": "Chinese New Year (Spring Festival)", - "2030-02-06": "Chinese New Year (Spring Festival)", - "2030-02-07": "Chinese New Year (Spring Festival)", - "2030-02-08": "Chinese New Year (Spring Festival)", + "2030-02-06": "Chinese New Year (Spring Festival) (Observed)", "2030-03-08": "International Women's Day", "2030-04-05": "Tomb-Sweeping Day", - "2030-04-06": "Tomb-Sweeping Day", - "2030-04-07": "Tomb-Sweeping Day", - "2030-04-29": "Labor Day", - "2030-04-30": "Labor Day", "2030-05-01": "Labor Day", - "2030-05-02": "Labor Day", - "2030-05-03": "Labor Day", "2030-05-04": "Youth Day", "2030-06-01": "Children's Day", - "2030-06-03": "Dragon Boat Festival", - "2030-06-04": "Dragon Boat Festival", "2030-06-05": "Dragon Boat Festival", "2030-08-01": "Army Day", "2030-09-12": "Mid-Autumn Festival", "2030-10-01": "National Day", "2030-10-02": "National Day", "2030-10-03": "National Day", - "2030-10-04": "National Day", - "2030-10-05": "National Day", - "2030-10-06": "National Day", - "2030-10-07": "National Day", "2031-01-01": "New Year's Day", - "2031-01-22": "Chinese New Year (Spring Festival)", "2031-01-23": "Chinese New Year (Spring Festival)", "2031-01-24": "Chinese New Year (Spring Festival)", "2031-01-25": "Chinese New Year (Spring Festival)", - "2031-01-26": "Chinese New Year (Spring Festival)", - "2031-01-27": "Chinese New Year (Spring Festival)", - "2031-01-28": "Chinese New Year (Spring Festival)", + "2031-01-27": "Chinese New Year (Spring Festival) (Observed)", "2031-03-08": "International Women's Day", "2031-04-05": "Tomb-Sweeping Day", - "2031-04-06": "Tomb-Sweeping Day", - "2031-04-07": "Tomb-Sweeping Day", + "2031-04-07": "Tomb-Sweeping Day (Observed)", "2031-05-01": "Labor Day", - "2031-05-02": "Labor Day", - "2031-05-03": "Labor Day", - "2031-05-04": "Labor Day; Youth Day", - "2031-05-05": "Labor Day", + "2031-05-04": "Youth Day", "2031-06-01": "Children's Day", - "2031-06-22": "Dragon Boat Festival", - "2031-06-23": "Dragon Boat Festival", "2031-06-24": "Dragon Boat Festival", "2031-08-01": "Army Day", "2031-10-01": "Mid-Autumn Festival; National Day", "2031-10-02": "National Day", "2031-10-03": "National Day", - "2031-10-04": "National Day", - "2031-10-05": "National Day", - "2031-10-06": "National Day", - "2031-10-07": "National Day", - "2031-10-08": "National Day", "2032-01-01": "New Year's Day", - "2032-01-02": "New Year's Day", - "2032-01-03": "New Year's Day", - "2032-02-10": "Chinese New Year (Spring Festival)", "2032-02-11": "Chinese New Year (Spring Festival)", "2032-02-12": "Chinese New Year (Spring Festival)", "2032-02-13": "Chinese New Year (Spring Festival)", - "2032-02-14": "Chinese New Year (Spring Festival)", - "2032-02-15": "Chinese New Year (Spring Festival)", - "2032-02-16": "Chinese New Year (Spring Festival)", "2032-03-08": "International Women's Day", - "2032-04-03": "Tomb-Sweeping Day", "2032-04-04": "Tomb-Sweeping Day", - "2032-04-05": "Tomb-Sweeping Day", + "2032-04-05": "Tomb-Sweeping Day (Observed)", "2032-05-01": "Labor Day", - "2032-05-02": "Labor Day", - "2032-05-03": "Labor Day", - "2032-05-04": "Labor Day; Youth Day", - "2032-05-05": "Labor Day", + "2032-05-03": "Labor Day (Observed)", + "2032-05-04": "Youth Day", "2032-06-01": "Children's Day", "2032-06-12": "Dragon Boat Festival", - "2032-06-13": "Dragon Boat Festival", - "2032-06-14": "Dragon Boat Festival", + "2032-06-14": "Dragon Boat Festival (Observed)", "2032-08-01": "Army Day", - "2032-09-18": "Mid-Autumn Festival", "2032-09-19": "Mid-Autumn Festival", - "2032-09-20": "Mid-Autumn Festival", + "2032-09-20": "Mid-Autumn Festival (Observed)", "2032-10-01": "National Day", "2032-10-02": "National Day", "2032-10-03": "National Day", - "2032-10-04": "National Day", - "2032-10-05": "National Day", - "2032-10-06": "National Day", - "2032-10-07": "National Day", + "2032-10-04": "National Day (Observed)", + "2032-10-05": "National Day (Observed)", "2033-01-01": "New Year's Day", - "2033-01-02": "New Year's Day", - "2033-01-03": "New Year's Day", - "2033-01-30": "Chinese New Year (Spring Festival)", + "2033-01-03": "New Year's Day (Observed)", "2033-01-31": "Chinese New Year (Spring Festival)", "2033-02-01": "Chinese New Year (Spring Festival)", "2033-02-02": "Chinese New Year (Spring Festival)", - "2033-02-03": "Chinese New Year (Spring Festival)", - "2033-02-04": "Chinese New Year (Spring Festival)", - "2033-02-05": "Chinese New Year (Spring Festival)", "2033-03-08": "International Women's Day", - "2033-04-02": "Tomb-Sweeping Day", - "2033-04-03": "Tomb-Sweeping Day", "2033-04-04": "Tomb-Sweeping Day", - "2033-04-30": "Labor Day", "2033-05-01": "Labor Day", - "2033-05-02": "Labor Day", - "2033-05-03": "Labor Day", - "2033-05-04": "Labor Day; Youth Day", - "2033-05-30": "Children's Day; Dragon Boat Festival", - "2033-05-31": "Children's Day; Dragon Boat Festival", + "2033-05-02": "Labor Day (Observed)", + "2033-05-04": "Youth Day", "2033-06-01": "Children's Day; Dragon Boat Festival", "2033-08-01": "Army Day", "2033-09-08": "Mid-Autumn Festival", - "2033-09-09": "Mid-Autumn Festival", - "2033-09-10": "Mid-Autumn Festival", "2033-10-01": "National Day", "2033-10-02": "National Day", "2033-10-03": "National Day", - "2033-10-04": "National Day", - "2033-10-05": "National Day", - "2033-10-06": "National Day", - "2033-10-07": "National Day", + "2033-10-04": "National Day (Observed)", + "2033-10-05": "National Day (Observed)", "2034-01-01": "New Year's Day", - "2034-01-02": "New Year's Day", - "2034-02-18": "Chinese New Year (Spring Festival)", + "2034-01-02": "New Year's Day (Observed)", "2034-02-19": "Chinese New Year (Spring Festival)", "2034-02-20": "Chinese New Year (Spring Festival)", "2034-02-21": "Chinese New Year (Spring Festival)", - "2034-02-22": "Chinese New Year (Spring Festival)", - "2034-02-23": "Chinese New Year (Spring Festival)", - "2034-02-24": "Chinese New Year (Spring Festival)", + "2034-02-22": "Chinese New Year (Spring Festival) (Observed)", "2034-03-08": "International Women's Day", - "2034-04-03": "Tomb-Sweeping Day", - "2034-04-04": "Tomb-Sweeping Day", "2034-04-05": "Tomb-Sweeping Day", - "2034-04-29": "Labor Day", - "2034-04-30": "Labor Day", "2034-05-01": "Labor Day", - "2034-05-02": "Labor Day", - "2034-05-03": "Labor Day", "2034-05-04": "Youth Day", "2034-06-01": "Children's Day", - "2034-06-18": "Dragon Boat Festival", - "2034-06-19": "Dragon Boat Festival", "2034-06-20": "Dragon Boat Festival", "2034-08-01": "Army Day", - "2034-09-25": "Mid-Autumn Festival", - "2034-09-26": "Mid-Autumn Festival", "2034-09-27": "Mid-Autumn Festival", "2034-10-01": "National Day", "2034-10-02": "National Day", "2034-10-03": "National Day", - "2034-10-04": "National Day", - "2034-10-05": "National Day", - "2034-10-06": "National Day", - "2034-10-07": "National Day", + "2034-10-04": "National Day (Observed)", "2035-01-01": "New Year's Day", - "2035-02-07": "Chinese New Year (Spring Festival)", "2035-02-08": "Chinese New Year (Spring Festival)", "2035-02-09": "Chinese New Year (Spring Festival)", "2035-02-10": "Chinese New Year (Spring Festival)", - "2035-02-11": "Chinese New Year (Spring Festival)", - "2035-02-12": "Chinese New Year (Spring Festival)", - "2035-02-13": "Chinese New Year (Spring Festival)", + "2035-02-12": "Chinese New Year (Spring Festival) (Observed)", "2035-03-08": "International Women's Day", "2035-04-05": "Tomb-Sweeping Day", - "2035-04-06": "Tomb-Sweeping Day", - "2035-04-07": "Tomb-Sweeping Day", - "2035-04-29": "Labor Day", - "2035-04-30": "Labor Day", "2035-05-01": "Labor Day", - "2035-05-02": "Labor Day", - "2035-05-03": "Labor Day", "2035-05-04": "Youth Day", "2035-06-01": "Children's Day", - "2035-06-09": "Dragon Boat Festival", "2035-06-10": "Dragon Boat Festival", - "2035-06-11": "Dragon Boat Festival", + "2035-06-11": "Dragon Boat Festival (Observed)", "2035-08-01": "Army Day", - "2035-09-15": "Mid-Autumn Festival", "2035-09-16": "Mid-Autumn Festival", - "2035-09-17": "Mid-Autumn Festival", + "2035-09-17": "Mid-Autumn Festival (Observed)", "2035-10-01": "National Day", "2035-10-02": "National Day", "2035-10-03": "National Day", - "2035-10-04": "National Day", - "2035-10-05": "National Day", - "2035-10-06": "National Day", - "2035-10-07": "National Day", "2036-01-01": "New Year's Day", - "2036-01-27": "Chinese New Year (Spring Festival)", "2036-01-28": "Chinese New Year (Spring Festival)", "2036-01-29": "Chinese New Year (Spring Festival)", "2036-01-30": "Chinese New Year (Spring Festival)", - "2036-01-31": "Chinese New Year (Spring Festival)", - "2036-02-01": "Chinese New Year (Spring Festival)", - "2036-02-02": "Chinese New Year (Spring Festival)", "2036-03-08": "International Women's Day", "2036-04-04": "Tomb-Sweeping Day", - "2036-04-05": "Tomb-Sweeping Day", - "2036-04-06": "Tomb-Sweeping Day", "2036-05-01": "Labor Day", - "2036-05-02": "Labor Day", - "2036-05-03": "Labor Day", - "2036-05-04": "Labor Day; Youth Day", - "2036-05-05": "Labor Day", + "2036-05-04": "Youth Day", "2036-05-30": "Dragon Boat Festival", - "2036-05-31": "Dragon Boat Festival", - "2036-06-01": "Children's Day; Dragon Boat Festival", + "2036-06-01": "Children's Day", "2036-08-01": "Army Day", "2036-10-01": "National Day", "2036-10-02": "National Day", "2036-10-03": "National Day", - "2036-10-04": "Mid-Autumn Festival; National Day", - "2036-10-05": "National Day", - "2036-10-06": "National Day", - "2036-10-07": "National Day", - "2036-10-08": "National Day", + "2036-10-04": "Mid-Autumn Festival", + "2036-10-06": "Mid-Autumn Festival (Observed)", "2037-01-01": "New Year's Day", - "2037-01-02": "New Year's Day", - "2037-01-03": "New Year's Day", - "2037-02-14": "Chinese New Year (Spring Festival)", "2037-02-15": "Chinese New Year (Spring Festival)", "2037-02-16": "Chinese New Year (Spring Festival)", "2037-02-17": "Chinese New Year (Spring Festival)", - "2037-02-18": "Chinese New Year (Spring Festival)", - "2037-02-19": "Chinese New Year (Spring Festival)", - "2037-02-20": "Chinese New Year (Spring Festival)", + "2037-02-18": "Chinese New Year (Spring Festival) (Observed)", "2037-03-08": "International Women's Day", "2037-04-04": "Tomb-Sweeping Day", - "2037-04-05": "Tomb-Sweeping Day", - "2037-04-06": "Tomb-Sweeping Day", + "2037-04-06": "Tomb-Sweeping Day (Observed)", "2037-05-01": "Labor Day", - "2037-05-02": "Labor Day", - "2037-05-03": "Labor Day", - "2037-05-04": "Labor Day; Youth Day", - "2037-05-05": "Labor Day", + "2037-05-04": "Youth Day", "2037-06-01": "Children's Day", "2037-06-18": "Dragon Boat Festival", - "2037-06-19": "Dragon Boat Festival", - "2037-06-20": "Dragon Boat Festival", "2037-08-01": "Army Day", "2037-09-24": "Mid-Autumn Festival", - "2037-09-25": "Mid-Autumn Festival", - "2037-09-26": "Mid-Autumn Festival", "2037-10-01": "National Day", "2037-10-02": "National Day", "2037-10-03": "National Day", - "2037-10-04": "National Day", - "2037-10-05": "National Day", - "2037-10-06": "National Day", - "2037-10-07": "National Day", + "2037-10-05": "National Day (Observed)", "2038-01-01": "New Year's Day", - "2038-01-02": "New Year's Day", - "2038-01-03": "New Year's Day", - "2038-02-03": "Chinese New Year (Spring Festival)", "2038-02-04": "Chinese New Year (Spring Festival)", "2038-02-05": "Chinese New Year (Spring Festival)", "2038-02-06": "Chinese New Year (Spring Festival)", - "2038-02-07": "Chinese New Year (Spring Festival)", - "2038-02-08": "Chinese New Year (Spring Festival)", - "2038-02-09": "Chinese New Year (Spring Festival)", + "2038-02-08": "Chinese New Year (Spring Festival) (Observed)", "2038-03-08": "International Women's Day", - "2038-04-03": "Tomb-Sweeping Day", - "2038-04-04": "Tomb-Sweeping Day", "2038-04-05": "Tomb-Sweeping Day", "2038-05-01": "Labor Day", - "2038-05-02": "Labor Day", - "2038-05-03": "Labor Day", - "2038-05-04": "Labor Day; Youth Day", - "2038-05-05": "Labor Day", + "2038-05-03": "Labor Day (Observed)", + "2038-05-04": "Youth Day", "2038-06-01": "Children's Day", - "2038-06-05": "Dragon Boat Festival", - "2038-06-06": "Dragon Boat Festival", "2038-06-07": "Dragon Boat Festival", "2038-08-01": "Army Day", - "2038-09-11": "Mid-Autumn Festival", - "2038-09-12": "Mid-Autumn Festival", "2038-09-13": "Mid-Autumn Festival", "2038-10-01": "National Day", "2038-10-02": "National Day", "2038-10-03": "National Day", - "2038-10-04": "National Day", - "2038-10-05": "National Day", - "2038-10-06": "National Day", - "2038-10-07": "National Day", + "2038-10-04": "National Day (Observed)", + "2038-10-05": "National Day (Observed)", "2039-01-01": "New Year's Day", - "2039-01-02": "New Year's Day", - "2039-01-03": "New Year's Day", - "2039-01-23": "Chinese New Year (Spring Festival)", + "2039-01-03": "New Year's Day (Observed)", "2039-01-24": "Chinese New Year (Spring Festival)", "2039-01-25": "Chinese New Year (Spring Festival)", "2039-01-26": "Chinese New Year (Spring Festival)", - "2039-01-27": "Chinese New Year (Spring Festival)", - "2039-01-28": "Chinese New Year (Spring Festival)", - "2039-01-29": "Chinese New Year (Spring Festival)", "2039-03-08": "International Women's Day", - "2039-04-03": "Tomb-Sweeping Day", - "2039-04-04": "Tomb-Sweeping Day", "2039-04-05": "Tomb-Sweeping Day", - "2039-04-30": "Labor Day", "2039-05-01": "Labor Day", - "2039-05-02": "Labor Day", - "2039-05-03": "Labor Day", - "2039-05-04": "Labor Day; Youth Day", + "2039-05-02": "Labor Day (Observed)", + "2039-05-04": "Youth Day", "2039-05-27": "Dragon Boat Festival", - "2039-05-28": "Dragon Boat Festival", - "2039-05-29": "Dragon Boat Festival", "2039-06-01": "Children's Day", "2039-08-01": "Army Day", "2039-10-01": "National Day", "2039-10-02": "Mid-Autumn Festival; National Day", "2039-10-03": "National Day", - "2039-10-04": "National Day", - "2039-10-05": "National Day", - "2039-10-06": "National Day", - "2039-10-07": "National Day", - "2039-10-08": "National Day", + "2039-10-04": "National Day (Observed)", + "2039-10-05": "Mid-Autumn Festival (Observed)", + "2039-10-06": "National Day (Observed)", "2040-01-01": "New Year's Day", - "2040-01-02": "New Year's Day", - "2040-02-11": "Chinese New Year (Spring Festival)", + "2040-01-02": "New Year's Day (Observed)", "2040-02-12": "Chinese New Year (Spring Festival)", "2040-02-13": "Chinese New Year (Spring Festival)", "2040-02-14": "Chinese New Year (Spring Festival)", - "2040-02-15": "Chinese New Year (Spring Festival)", - "2040-02-16": "Chinese New Year (Spring Festival)", - "2040-02-17": "Chinese New Year (Spring Festival)", + "2040-02-15": "Chinese New Year (Spring Festival) (Observed)", "2040-03-08": "International Women's Day", - "2040-04-02": "Tomb-Sweeping Day", - "2040-04-03": "Tomb-Sweeping Day", "2040-04-04": "Tomb-Sweeping Day", - "2040-04-29": "Labor Day", - "2040-04-30": "Labor Day", "2040-05-01": "Labor Day", - "2040-05-02": "Labor Day", - "2040-05-03": "Labor Day", "2040-05-04": "Youth Day", "2040-06-01": "Children's Day", "2040-06-14": "Dragon Boat Festival", - "2040-06-15": "Dragon Boat Festival", - "2040-06-16": "Dragon Boat Festival", "2040-08-01": "Army Day", "2040-09-20": "Mid-Autumn Festival", - "2040-09-21": "Mid-Autumn Festival", - "2040-09-22": "Mid-Autumn Festival", "2040-10-01": "National Day", "2040-10-02": "National Day", "2040-10-03": "National Day", - "2040-10-04": "National Day", - "2040-10-05": "National Day", - "2040-10-06": "National Day", - "2040-10-07": "National Day", "2041-01-01": "New Year's Day", - "2041-01-31": "Chinese New Year (Spring Festival)", "2041-02-01": "Chinese New Year (Spring Festival)", "2041-02-02": "Chinese New Year (Spring Festival)", "2041-02-03": "Chinese New Year (Spring Festival)", - "2041-02-04": "Chinese New Year (Spring Festival)", - "2041-02-05": "Chinese New Year (Spring Festival)", - "2041-02-06": "Chinese New Year (Spring Festival)", + "2041-02-04": "Chinese New Year (Spring Festival) (Observed)", + "2041-02-05": "Chinese New Year (Spring Festival) (Observed)", "2041-03-08": "International Women's Day", "2041-04-04": "Tomb-Sweeping Day", - "2041-04-05": "Tomb-Sweeping Day", - "2041-04-06": "Tomb-Sweeping Day", - "2041-04-29": "Labor Day", - "2041-04-30": "Labor Day", "2041-05-01": "Labor Day", - "2041-05-02": "Labor Day", - "2041-05-03": "Labor Day", "2041-05-04": "Youth Day", - "2041-06-01": "Children's Day; Dragon Boat Festival", - "2041-06-02": "Dragon Boat Festival", + "2041-06-01": "Children's Day", "2041-06-03": "Dragon Boat Festival", "2041-08-01": "Army Day", - "2041-09-08": "Mid-Autumn Festival", - "2041-09-09": "Mid-Autumn Festival", "2041-09-10": "Mid-Autumn Festival", "2041-10-01": "National Day", "2041-10-02": "National Day", "2041-10-03": "National Day", - "2041-10-04": "National Day", - "2041-10-05": "National Day", - "2041-10-06": "National Day", - "2041-10-07": "National Day", "2042-01-01": "New Year's Day", - "2042-01-21": "Chinese New Year (Spring Festival)", "2042-01-22": "Chinese New Year (Spring Festival)", "2042-01-23": "Chinese New Year (Spring Festival)", "2042-01-24": "Chinese New Year (Spring Festival)", - "2042-01-25": "Chinese New Year (Spring Festival)", - "2042-01-26": "Chinese New Year (Spring Festival)", - "2042-01-27": "Chinese New Year (Spring Festival)", "2042-03-08": "International Women's Day", "2042-04-05": "Tomb-Sweeping Day", - "2042-04-06": "Tomb-Sweeping Day", - "2042-04-07": "Tomb-Sweeping Day", + "2042-04-07": "Tomb-Sweeping Day (Observed)", "2042-05-01": "Labor Day", - "2042-05-02": "Labor Day", - "2042-05-03": "Labor Day", - "2042-05-04": "Labor Day; Youth Day", - "2042-05-05": "Labor Day", + "2042-05-04": "Youth Day", "2042-06-01": "Children's Day", - "2042-06-21": "Dragon Boat Festival", "2042-06-22": "Dragon Boat Festival", - "2042-06-23": "Dragon Boat Festival", + "2042-06-23": "Dragon Boat Festival (Observed)", "2042-08-01": "Army Day", - "2042-09-27": "Mid-Autumn Festival", "2042-09-28": "Mid-Autumn Festival", - "2042-09-29": "Mid-Autumn Festival", + "2042-09-29": "Mid-Autumn Festival (Observed)", "2042-10-01": "National Day", "2042-10-02": "National Day", "2042-10-03": "National Day", - "2042-10-04": "National Day", - "2042-10-05": "National Day", - "2042-10-06": "National Day", - "2042-10-07": "National Day", "2043-01-01": "New Year's Day", - "2043-01-02": "New Year's Day", - "2043-01-03": "New Year's Day", - "2043-02-09": "Chinese New Year (Spring Festival)", "2043-02-10": "Chinese New Year (Spring Festival)", "2043-02-11": "Chinese New Year (Spring Festival)", "2043-02-12": "Chinese New Year (Spring Festival)", - "2043-02-13": "Chinese New Year (Spring Festival)", - "2043-02-14": "Chinese New Year (Spring Festival)", - "2043-02-15": "Chinese New Year (Spring Festival)", "2043-03-08": "International Women's Day", - "2043-04-04": "Tomb-Sweeping Day", "2043-04-05": "Tomb-Sweeping Day", - "2043-04-06": "Tomb-Sweeping Day", + "2043-04-06": "Tomb-Sweeping Day (Observed)", "2043-05-01": "Labor Day", - "2043-05-02": "Labor Day", - "2043-05-03": "Labor Day", - "2043-05-04": "Labor Day; Youth Day", - "2043-05-05": "Labor Day", + "2043-05-04": "Youth Day", "2043-06-01": "Children's Day", "2043-06-11": "Dragon Boat Festival", - "2043-06-12": "Dragon Boat Festival", - "2043-06-13": "Dragon Boat Festival", "2043-08-01": "Army Day", "2043-09-17": "Mid-Autumn Festival", - "2043-09-18": "Mid-Autumn Festival", - "2043-09-19": "Mid-Autumn Festival", "2043-10-01": "National Day", "2043-10-02": "National Day", "2043-10-03": "National Day", - "2043-10-04": "National Day", - "2043-10-05": "National Day", - "2043-10-06": "National Day", - "2043-10-07": "National Day", + "2043-10-05": "National Day (Observed)", "2044-01-01": "New Year's Day", - "2044-01-02": "New Year's Day", - "2044-01-03": "New Year's Day", - "2044-01-29": "Chinese New Year (Spring Festival)", "2044-01-30": "Chinese New Year (Spring Festival)", "2044-01-31": "Chinese New Year (Spring Festival)", "2044-02-01": "Chinese New Year (Spring Festival)", - "2044-02-02": "Chinese New Year (Spring Festival)", - "2044-02-03": "Chinese New Year (Spring Festival)", - "2044-02-04": "Chinese New Year (Spring Festival)", + "2044-02-02": "Chinese New Year (Spring Festival) (Observed)", + "2044-02-03": "Chinese New Year (Spring Festival) (Observed)", "2044-03-08": "International Women's Day", - "2044-04-02": "Tomb-Sweeping Day", - "2044-04-03": "Tomb-Sweeping Day", "2044-04-04": "Tomb-Sweeping Day", - "2044-04-30": "Labor Day", "2044-05-01": "Labor Day", - "2044-05-02": "Labor Day", - "2044-05-03": "Labor Day", - "2044-05-04": "Labor Day; Youth Day", - "2044-05-29": "Dragon Boat Festival", - "2044-05-30": "Dragon Boat Festival", + "2044-05-02": "Labor Day (Observed)", + "2044-05-04": "Youth Day", "2044-05-31": "Dragon Boat Festival", "2044-06-01": "Children's Day", "2044-08-01": "Army Day", "2044-10-01": "National Day", "2044-10-02": "National Day", "2044-10-03": "National Day", - "2044-10-04": "National Day", - "2044-10-05": "Mid-Autumn Festival; National Day", - "2044-10-06": "National Day", - "2044-10-07": "National Day", - "2044-10-08": "National Day", + "2044-10-04": "National Day (Observed)", + "2044-10-05": "Mid-Autumn Festival", + "2044-10-06": "National Day (Observed)", "2045-01-01": "New Year's Day", - "2045-01-02": "New Year's Day", - "2045-02-16": "Chinese New Year (Spring Festival)", + "2045-01-02": "New Year's Day (Observed)", "2045-02-17": "Chinese New Year (Spring Festival)", "2045-02-18": "Chinese New Year (Spring Festival)", "2045-02-19": "Chinese New Year (Spring Festival)", - "2045-02-20": "Chinese New Year (Spring Festival)", - "2045-02-21": "Chinese New Year (Spring Festival)", - "2045-02-22": "Chinese New Year (Spring Festival)", + "2045-02-20": "Chinese New Year (Spring Festival) (Observed)", + "2045-02-21": "Chinese New Year (Spring Festival) (Observed)", "2045-03-08": "International Women's Day", - "2045-04-02": "Tomb-Sweeping Day", - "2045-04-03": "Tomb-Sweeping Day", "2045-04-04": "Tomb-Sweeping Day", - "2045-04-29": "Labor Day", - "2045-04-30": "Labor Day", "2045-05-01": "Labor Day", - "2045-05-02": "Labor Day", - "2045-05-03": "Labor Day", "2045-05-04": "Youth Day", "2045-06-01": "Children's Day", - "2045-06-17": "Dragon Boat Festival", - "2045-06-18": "Dragon Boat Festival", "2045-06-19": "Dragon Boat Festival", "2045-08-01": "Army Day", - "2045-09-23": "Mid-Autumn Festival", - "2045-09-24": "Mid-Autumn Festival", "2045-09-25": "Mid-Autumn Festival", "2045-10-01": "National Day", "2045-10-02": "National Day", "2045-10-03": "National Day", - "2045-10-04": "National Day", - "2045-10-05": "National Day", - "2045-10-06": "National Day", - "2045-10-07": "National Day", + "2045-10-04": "National Day (Observed)", "2046-01-01": "New Year's Day", - "2046-02-05": "Chinese New Year (Spring Festival)", "2046-02-06": "Chinese New Year (Spring Festival)", "2046-02-07": "Chinese New Year (Spring Festival)", "2046-02-08": "Chinese New Year (Spring Festival)", - "2046-02-09": "Chinese New Year (Spring Festival)", - "2046-02-10": "Chinese New Year (Spring Festival)", - "2046-02-11": "Chinese New Year (Spring Festival)", "2046-03-08": "International Women's Day", "2046-04-05": "Tomb-Sweeping Day", - "2046-04-06": "Tomb-Sweeping Day", - "2046-04-07": "Tomb-Sweeping Day", - "2046-04-29": "Labor Day", - "2046-04-30": "Labor Day", "2046-05-01": "Labor Day", - "2046-05-02": "Labor Day", - "2046-05-03": "Labor Day", "2046-05-04": "Youth Day", "2046-06-01": "Children's Day", "2046-06-08": "Dragon Boat Festival", - "2046-06-09": "Dragon Boat Festival", - "2046-06-10": "Dragon Boat Festival", "2046-08-01": "Army Day", "2046-09-15": "Mid-Autumn Festival", - "2046-09-16": "Mid-Autumn Festival", - "2046-09-17": "Mid-Autumn Festival", + "2046-09-17": "Mid-Autumn Festival (Observed)", "2046-10-01": "National Day", "2046-10-02": "National Day", "2046-10-03": "National Day", - "2046-10-04": "National Day", - "2046-10-05": "National Day", - "2046-10-06": "National Day", - "2046-10-07": "National Day", "2047-01-01": "New Year's Day", - "2047-01-25": "Chinese New Year (Spring Festival)", "2047-01-26": "Chinese New Year (Spring Festival)", "2047-01-27": "Chinese New Year (Spring Festival)", "2047-01-28": "Chinese New Year (Spring Festival)", - "2047-01-29": "Chinese New Year (Spring Festival)", - "2047-01-30": "Chinese New Year (Spring Festival)", - "2047-01-31": "Chinese New Year (Spring Festival)", + "2047-01-29": "Chinese New Year (Spring Festival) (Observed)", + "2047-01-30": "Chinese New Year (Spring Festival) (Observed)", "2047-03-08": "International Women's Day", "2047-04-05": "Tomb-Sweeping Day", - "2047-04-06": "Tomb-Sweeping Day", - "2047-04-07": "Tomb-Sweeping Day", - "2047-04-29": "Labor Day", - "2047-04-30": "Labor Day", "2047-05-01": "Labor Day", - "2047-05-02": "Labor Day", - "2047-05-03": "Labor Day", "2047-05-04": "Youth Day", - "2047-05-27": "Dragon Boat Festival", - "2047-05-28": "Dragon Boat Festival", "2047-05-29": "Dragon Boat Festival", "2047-06-01": "Children's Day", "2047-08-01": "Army Day", "2047-10-01": "National Day", "2047-10-02": "National Day", "2047-10-03": "National Day", - "2047-10-04": "Mid-Autumn Festival; National Day", - "2047-10-05": "National Day", - "2047-10-06": "National Day", - "2047-10-07": "National Day", - "2047-10-08": "National Day", + "2047-10-04": "Mid-Autumn Festival", "2048-01-01": "New Year's Day", - "2048-02-13": "Chinese New Year (Spring Festival)", "2048-02-14": "Chinese New Year (Spring Festival)", "2048-02-15": "Chinese New Year (Spring Festival)", "2048-02-16": "Chinese New Year (Spring Festival)", - "2048-02-17": "Chinese New Year (Spring Festival)", - "2048-02-18": "Chinese New Year (Spring Festival)", - "2048-02-19": "Chinese New Year (Spring Festival)", + "2048-02-17": "Chinese New Year (Spring Festival) (Observed)", + "2048-02-18": "Chinese New Year (Spring Festival) (Observed)", "2048-03-08": "International Women's Day", "2048-04-04": "Tomb-Sweeping Day", - "2048-04-05": "Tomb-Sweeping Day", - "2048-04-06": "Tomb-Sweeping Day", + "2048-04-06": "Tomb-Sweeping Day (Observed)", "2048-05-01": "Labor Day", - "2048-05-02": "Labor Day", - "2048-05-03": "Labor Day", - "2048-05-04": "Labor Day; Youth Day", - "2048-05-05": "Labor Day", + "2048-05-04": "Youth Day", "2048-06-01": "Children's Day", - "2048-06-13": "Dragon Boat Festival", - "2048-06-14": "Dragon Boat Festival", "2048-06-15": "Dragon Boat Festival", "2048-08-01": "Army Day", - "2048-09-20": "Mid-Autumn Festival", - "2048-09-21": "Mid-Autumn Festival", "2048-09-22": "Mid-Autumn Festival", "2048-10-01": "National Day", "2048-10-02": "National Day", "2048-10-03": "National Day", - "2048-10-04": "National Day", - "2048-10-05": "National Day", - "2048-10-06": "National Day", - "2048-10-07": "National Day", + "2048-10-05": "National Day (Observed)", "2049-01-01": "New Year's Day", - "2049-01-02": "New Year's Day", - "2049-01-03": "New Year's Day", - "2049-02-01": "Chinese New Year (Spring Festival)", "2049-02-02": "Chinese New Year (Spring Festival)", "2049-02-03": "Chinese New Year (Spring Festival)", "2049-02-04": "Chinese New Year (Spring Festival)", - "2049-02-05": "Chinese New Year (Spring Festival)", - "2049-02-06": "Chinese New Year (Spring Festival)", - "2049-02-07": "Chinese New Year (Spring Festival)", "2049-03-08": "International Women's Day", - "2049-04-03": "Tomb-Sweeping Day", "2049-04-04": "Tomb-Sweeping Day", - "2049-04-05": "Tomb-Sweeping Day", + "2049-04-05": "Tomb-Sweeping Day (Observed)", "2049-05-01": "Labor Day", - "2049-05-02": "Labor Day", - "2049-05-03": "Labor Day", - "2049-05-04": "Labor Day; Youth Day", - "2049-05-05": "Labor Day", + "2049-05-03": "Labor Day (Observed)", + "2049-05-04": "Youth Day", "2049-06-01": "Children's Day", "2049-06-04": "Dragon Boat Festival", - "2049-06-05": "Dragon Boat Festival", - "2049-06-06": "Dragon Boat Festival", "2049-08-01": "Army Day", "2049-09-11": "Mid-Autumn Festival", - "2049-09-12": "Mid-Autumn Festival", - "2049-09-13": "Mid-Autumn Festival", + "2049-09-13": "Mid-Autumn Festival (Observed)", "2049-10-01": "National Day", "2049-10-02": "National Day", "2049-10-03": "National Day", - "2049-10-04": "National Day", - "2049-10-05": "National Day", - "2049-10-06": "National Day", - "2049-10-07": "National Day", + "2049-10-04": "National Day (Observed)", + "2049-10-05": "National Day (Observed)", "2050-01-01": "New Year's Day", - "2050-01-02": "New Year's Day", - "2050-01-03": "New Year's Day", - "2050-01-22": "Chinese New Year (Spring Festival)", + "2050-01-03": "New Year's Day (Observed)", "2050-01-23": "Chinese New Year (Spring Festival)", "2050-01-24": "Chinese New Year (Spring Festival)", "2050-01-25": "Chinese New Year (Spring Festival)", - "2050-01-26": "Chinese New Year (Spring Festival)", - "2050-01-27": "Chinese New Year (Spring Festival)", - "2050-01-28": "Chinese New Year (Spring Festival)", + "2050-01-26": "Chinese New Year (Spring Festival) (Observed)", "2050-03-08": "International Women's Day", - "2050-04-03": "Tomb-Sweeping Day", - "2050-04-04": "Tomb-Sweeping Day", "2050-04-05": "Tomb-Sweeping Day", - "2050-04-30": "Labor Day", "2050-05-01": "Labor Day", - "2050-05-02": "Labor Day", - "2050-05-03": "Labor Day", - "2050-05-04": "Labor Day; Youth Day", + "2050-05-02": "Labor Day (Observed)", + "2050-05-04": "Youth Day", "2050-06-01": "Children's Day", "2050-06-23": "Dragon Boat Festival", - "2050-06-24": "Dragon Boat Festival", - "2050-06-25": "Dragon Boat Festival", "2050-08-01": "Army Day", "2050-09-30": "Mid-Autumn Festival", "2050-10-01": "National Day", "2050-10-02": "National Day", "2050-10-03": "National Day", - "2050-10-04": "National Day", - "2050-10-05": "National Day", - "2050-10-06": "National Day", - "2050-10-07": "National Day" + "2050-10-04": "National Day (Observed)", + "2050-10-05": "National Day (Observed)" } diff --git a/tests/countries/test_china.py b/tests/countries/test_china.py index 054c673ba..e9fe2a578 100644 --- a/tests/countries/test_china.py +++ b/tests/countries/test_china.py @@ -17,7 +17,7 @@ class TestChina(TestCase): @classmethod def setUpClass(cls): - super().setUpClass(China, years=range(1950, 2051)) + super().setUpClass(China, years=range(1950, 2051), years_non_observed=range(2001, 2025)) def test_country_aliases(self): self.assertCountryAliases(China, CN, CHN) @@ -26,6 +26,97 @@ def test_no_holidays(self): self.assertNoHolidays(China(years=1949)) self.assertNoHolidays(China(years=1949, categories=HALF_DAY)) + def test_new_years_day(self): + self.assertHolidayName("元旦", (f"{year}-01-01" for year in range(1950, 2051))) + + self.assertNoNonObservedHoliday( + "2005-01-03", + "2006-01-02", + "2011-01-03", + "2012-01-02", + "2017-01-02", + "2022-01-03", + "2023-01-02", + ) + + def test_chinese_new_year_eve(self): + name = "农历除夕" + self.assertHolidayName( + name, + "2008-02-06", + "2009-01-25", + "2010-02-13", + "2011-02-02", + "2012-01-22", + "2013-02-09", + ) + self.assertNoHolidayName(name, range(1950, 2008), range(2014, 2051)) + + self.assertNoNonObservedHoliday( + "2009-01-28", + "2010-02-16", + "2012-01-25", + "2013-02-12", + ) + + def test_chinese_new_year(self): + name = "春节" + self.assertHolidayName(name, range(1950, 2051)) + self.assertHolidayName( + name, + "2021-02-12", + "2021-02-13", + "2021-02-14", + "2022-02-01", + "2022-02-02", + "2022-02-03", + "2023-01-22", + "2023-01-23", + "2023-01-24", + ) + + self.assertNoNonObservedHoliday( + "2003-02-04", + "2003-02-05", + "2004-01-26", + "2006-02-01", + "2007-02-21", + "2010-02-17", + "2013-02-13", + "2014-02-03", + "2014-02-04", + "2015-02-23", + "2017-01-31", + "2017-02-01", + "2018-02-19", + "2018-02-20", + "2020-01-28", + "2020-01-29", + "2021-02-15", + "2021-02-16", + "2023-01-25", + "2024-02-13", + "2024-02-14", + ) + + def test_labor_day(self): + name = "劳动节" + self.assertHolidayName(name, (f"{year}-05-01" for year in range(1950, 2051))) + for year in range(2000, 2008): + self.assertHolidayName(name, (f"{year}-05-02", f"{year}-05-03")) + + self.assertNoNonObservedHoliday( + "2003-05-05", + "2004-05-04", + "2004-05-05", + "2005-05-04", + "2010-05-03", + "2011-05-02", + "2016-05-02", + "2021-05-03", + "2022-05-02", + ) + def test_national_day(self): name = "国庆节" for year in range(1950, 1999): @@ -34,23 +125,100 @@ def test_national_day(self): self.assertHolidayName(name, (f"{year}-10-01", f"{year}-10-02", f"{year}-10-03")) self.assertNoNonObservedHoliday( - "2020-10-04", + "2004-10-04", + "2004-10-05", + "2005-10-04", + "2005-10-05", + "2006-10-04", + "2009-10-06", + "2010-10-04", + "2010-10-05", + "2011-10-04", + "2011-10-05", + "2015-10-05", + "2016-10-04", + "2016-10-05", + "2017-10-05", "2020-10-05", - "2020-10-06", - "2020-10-07", - "2020-10-08", "2021-10-04", "2021-10-05", - "2021-10-06", - "2021-10-07", "2022-10-04", "2022-10-05", - "2022-10-06", - "2022-10-07", - "2023-09-30", "2023-10-04", - "2023-10-05", - "2023-10-06", + ) + + def test_qingming_festival(self): + name = "清明节" + self.assertHolidayName(name, range(2008, 2051)) + self.assertNoHolidayName(name, range(1950, 2008)) + + self.assertHolidayName( + name, + "2017-04-04", + "2018-04-05", + "2019-04-05", + "2020-04-04", + "2021-04-04", + "2022-04-05", + "2023-04-05", + "2024-04-04", + ) + + self.assertNoNonObservedHoliday( + "2009-04-06", + "2014-04-07", + "2015-04-06", + "2020-04-06", + "2021-04-05", + ) + + def test_dragon_boat_festival(self): + name = "端午节" + self.assertHolidayName(name, range(2008, 2051)) + self.assertNoHolidayName(name, range(1950, 2008)) + + self.assertHolidayName( + name, + "2017-05-30", + "2018-06-18", + "2019-06-07", + "2020-06-25", + "2021-06-14", + "2022-06-03", + "2023-06-22", + "2024-06-10", + ) + + self.assertNoNonObservedHoliday( + "2008-06-09", + "2012-06-22", + "2015-06-22", + ) + + def test_mid_autumn_festival(self): + name = "中秋节" + self.assertHolidayName(name, range(2008, 2051)) + self.assertNoHolidayName(name, range(1950, 2008)) + + self.assertHolidayName( + name, + "2017-10-04", + "2018-09-24", + "2019-09-13", + "2020-10-01", + "2021-09-21", + "2022-09-10", + "2023-09-29", + "2024-09-17", + ) + + self.assertNoNonObservedHoliday( + "2008-09-15", + "2009-10-05", + "2012-10-04", + "2015-10-06", + "2020-10-06", + "2022-09-12", ) def test_1950_public_holiday(self): @@ -87,24 +255,18 @@ def test_2001_public_holiday(self): ("2001-01-24", "春节"), ("2001-01-25", "春节"), ("2001-01-26", "春节"), - ("2001-01-27", "春节"), - ("2001-01-28", "春节"), - ("2001-01-29", "春节"), - ("2001-01-30", "春节"), + ("2001-01-29", "休息日(2001-01-20日起取代)"), + ("2001-01-30", "休息日(2001-01-21日起取代)"), ("2001-05-01", "劳动节"), ("2001-05-02", "劳动节"), ("2001-05-03", "劳动节"), - ("2001-05-04", "劳动节"), - ("2001-05-05", "劳动节"), - ("2001-05-06", "劳动节"), - ("2001-05-07", "劳动节"), + ("2001-05-04", "休息日(2001-04-28日起取代)"), + ("2001-05-07", "休息日(2001-04-29日起取代)"), ("2001-10-01", "国庆节"), ("2001-10-02", "国庆节"), ("2001-10-03", "国庆节"), - ("2001-10-04", "国庆节"), - ("2001-10-05", "国庆节"), - ("2001-10-06", "国庆节"), - ("2001-10-07", "国庆节"), + ("2001-10-04", "休息日(2001-09-29日起取代)"), + ("2001-10-05", "休息日(2001-09-30日起取代)"), ) def test_2002_public_holiday(self): @@ -112,29 +274,23 @@ def test_2002_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2002), ("2002-01-01", "元旦"), - ("2002-01-02", "元旦"), - ("2002-01-03", "元旦"), + ("2002-01-02", "休息日(2001-12-29日起取代)"), + ("2002-01-03", "休息日(2001-12-30日起取代)"), ("2002-02-12", "春节"), ("2002-02-13", "春节"), ("2002-02-14", "春节"), - ("2002-02-15", "春节"), - ("2002-02-16", "春节"), - ("2002-02-17", "春节"), - ("2002-02-18", "春节"), + ("2002-02-15", "休息日(2002-02-09日起取代)"), + ("2002-02-18", "休息日(2002-02-10日起取代)"), ("2002-05-01", "劳动节"), ("2002-05-02", "劳动节"), ("2002-05-03", "劳动节"), - ("2002-05-04", "劳动节"), - ("2002-05-05", "劳动节"), - ("2002-05-06", "劳动节"), - ("2002-05-07", "劳动节"), + ("2002-05-06", "休息日(2002-04-27日起取代)"), + ("2002-05-07", "休息日(2002-04-28日起取代)"), ("2002-10-01", "国庆节"), ("2002-10-02", "国庆节"), ("2002-10-03", "国庆节"), - ("2002-10-04", "国庆节"), - ("2002-10-05", "国庆节"), - ("2002-10-06", "国庆节"), - ("2002-10-07", "国庆节"), + ("2002-10-04", "休息日(2002-09-28日起取代)"), + ("2002-10-07", "休息日(2002-09-29日起取代)"), ) def test_2003_public_holiday(self): @@ -145,24 +301,21 @@ def test_2003_public_holiday(self): ("2003-02-01", "春节"), ("2003-02-02", "春节"), ("2003-02-03", "春节"), - ("2003-02-04", "春节"), - ("2003-02-05", "春节"), - ("2003-02-06", "春节"), - ("2003-02-07", "春节"), + ("2003-02-04", "春节(观察日)"), + ("2003-02-05", "春节(观察日)"), + ("2003-02-06", "休息日(2003-02-08日起取代)"), + ("2003-02-07", "休息日(2003-02-09日起取代)"), ("2003-05-01", "劳动节"), ("2003-05-02", "劳动节"), ("2003-05-03", "劳动节"), - ("2003-05-04", "劳动节"), - ("2003-05-05", "劳动节"), - ("2003-05-06", "劳动节"), - ("2003-05-07", "劳动节"), + ("2003-05-05", "劳动节(观察日)"), + ("2003-05-06", "休息日(2003-04-26日起取代)"), + ("2003-05-07", "休息日(2003-04-27日起取代)"), ("2003-10-01", "国庆节"), ("2003-10-02", "国庆节"), ("2003-10-03", "国庆节"), - ("2003-10-04", "国庆节"), - ("2003-10-05", "国庆节"), - ("2003-10-06", "国庆节"), - ("2003-10-07", "国庆节"), + ("2003-10-06", "休息日(2003-09-27日起取代)"), + ("2003-10-07", "休息日(2003-09-28日起取代)"), ) def test_2004_public_holiday(self): @@ -173,24 +326,23 @@ def test_2004_public_holiday(self): ("2004-01-22", "春节"), ("2004-01-23", "春节"), ("2004-01-24", "春节"), - ("2004-01-25", "春节"), - ("2004-01-26", "春节"), - ("2004-01-27", "春节"), - ("2004-01-28", "春节"), + ("2004-01-26", "春节(观察日)"), + ("2004-01-27", "休息日(2004-01-17日起取代)"), + ("2004-01-28", "休息日(2004-01-18日起取代)"), ("2004-05-01", "劳动节"), ("2004-05-02", "劳动节"), ("2004-05-03", "劳动节"), - ("2004-05-04", "劳动节"), - ("2004-05-05", "劳动节"), - ("2004-05-06", "劳动节"), - ("2004-05-07", "劳动节"), + ("2004-05-04", "劳动节(观察日)"), + ("2004-05-05", "劳动节(观察日)"), + ("2004-05-06", "休息日(2004-05-08日起取代)"), + ("2004-05-07", "休息日(2004-05-09日起取代)"), ("2004-10-01", "国庆节"), ("2004-10-02", "国庆节"), ("2004-10-03", "国庆节"), - ("2004-10-04", "国庆节"), - ("2004-10-05", "国庆节"), - ("2004-10-06", "国庆节"), - ("2004-10-07", "国庆节"), + ("2004-10-04", "国庆节(观察日)"), + ("2004-10-05", "国庆节(观察日)"), + ("2004-10-06", "休息日(2004-10-09日起取代)"), + ("2004-10-07", "休息日(2004-10-10日起取代)"), ) def test_2005_public_holiday(self): @@ -198,29 +350,25 @@ def test_2005_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2005), ("2005-01-01", "元旦"), - ("2005-01-02", "元旦"), - ("2005-01-03", "元旦"), + ("2005-01-03", "元旦(观察日)"), ("2005-02-09", "春节"), ("2005-02-10", "春节"), ("2005-02-11", "春节"), - ("2005-02-12", "春节"), - ("2005-02-13", "春节"), - ("2005-02-14", "春节"), - ("2005-02-15", "春节"), + ("2005-02-14", "休息日(2005-02-05日起取代)"), + ("2005-02-15", "休息日(2005-02-06日起取代)"), ("2005-05-01", "劳动节"), ("2005-05-02", "劳动节"), ("2005-05-03", "劳动节"), - ("2005-05-04", "劳动节"), - ("2005-05-05", "劳动节"), - ("2005-05-06", "劳动节"), - ("2005-05-07", "劳动节"), + ("2005-05-04", "劳动节(观察日)"), + ("2005-05-05", "休息日(2005-04-30日起取代)"), + ("2005-05-06", "休息日(2005-05-08日起取代)"), ("2005-10-01", "国庆节"), ("2005-10-02", "国庆节"), ("2005-10-03", "国庆节"), - ("2005-10-04", "国庆节"), - ("2005-10-05", "国庆节"), - ("2005-10-06", "国庆节"), - ("2005-10-07", "国庆节"), + ("2005-10-04", "国庆节(观察日)"), + ("2005-10-05", "国庆节(观察日)"), + ("2005-10-06", "休息日(2005-10-08日起取代)"), + ("2005-10-07", "休息日(2005-10-09日起取代)"), ) def test_2006_public_holiday(self): @@ -228,29 +376,25 @@ def test_2006_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2006), ("2006-01-01", "元旦"), - ("2006-01-02", "元旦"), - ("2006-01-03", "元旦"), + ("2006-01-02", "元旦(观察日)"), + ("2006-01-03", "休息日(2005-12-31日起取代)"), ("2006-01-29", "春节"), ("2006-01-30", "春节"), ("2006-01-31", "春节"), - ("2006-02-01", "春节"), - ("2006-02-02", "春节"), - ("2006-02-03", "春节"), - ("2006-02-04", "春节"), + ("2006-02-01", "春节(观察日)"), + ("2006-02-02", "休息日(2006-01-28日起取代)"), + ("2006-02-03", "休息日(2006-02-05日起取代)"), ("2006-05-01", "劳动节"), ("2006-05-02", "劳动节"), ("2006-05-03", "劳动节"), - ("2006-05-04", "劳动节"), - ("2006-05-05", "劳动节"), - ("2006-05-06", "劳动节"), - ("2006-05-07", "劳动节"), + ("2006-05-04", "休息日(2006-04-29日起取代)"), + ("2006-05-05", "休息日(2006-04-30日起取代)"), ("2006-10-01", "国庆节"), ("2006-10-02", "国庆节"), ("2006-10-03", "国庆节"), - ("2006-10-04", "国庆节"), - ("2006-10-05", "国庆节"), - ("2006-10-06", "国庆节"), - ("2006-10-07", "国庆节"), + ("2006-10-04", "国庆节(观察日)"), + ("2006-10-05", "休息日(2006-09-30日起取代)"), + ("2006-10-06", "休息日(2006-10-08日起取代)"), ) def test_2007_public_holiday(self): @@ -258,48 +402,25 @@ def test_2007_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2007), ("2007-01-01", "元旦"), - ("2007-01-02", "元旦"), - ("2007-01-03", "元旦"), + ("2007-01-02", "休息日(2006-12-30日起取代)"), + ("2007-01-03", "休息日(2006-12-31日起取代)"), ("2007-02-18", "春节"), ("2007-02-19", "春节"), ("2007-02-20", "春节"), - ("2007-02-21", "春节"), - ("2007-02-22", "春节"), - ("2007-02-23", "春节"), - ("2007-02-24", "春节"), + ("2007-02-21", "春节(观察日)"), + ("2007-02-22", "休息日(2007-02-17日起取代)"), + ("2007-02-23", "休息日(2007-02-25日起取代)"), ("2007-05-01", "劳动节"), ("2007-05-02", "劳动节"), ("2007-05-03", "劳动节"), - ("2007-05-04", "劳动节"), - ("2007-05-05", "劳动节"), - ("2007-05-06", "劳动节"), - ("2007-05-07", "劳动节"), + ("2007-05-04", "休息日(2007-04-28日起取代)"), + ("2007-05-07", "休息日(2007-04-29日起取代)"), ("2007-10-01", "国庆节"), ("2007-10-02", "国庆节"), ("2007-10-03", "国庆节"), - ("2007-10-04", "国庆节"), - ("2007-10-05", "国庆节"), - ("2007-10-06", "国庆节"), - ("2007-10-07", "国庆节"), - # From 2008 Notice. - ("2007-12-30", "元旦"), - ("2007-12-31", "元旦"), - ) - - self.assertNonObservedHolidays( - China(categories=PUBLIC, observed=False, years=2007), - ("2007-01-01", "元旦"), - ("2007-02-18", "春节"), - ("2007-02-19", "春节"), - ("2007-02-20", "春节"), - ("2007-05-01", "劳动节"), - ("2007-05-02", "劳动节"), - ("2007-05-03", "劳动节"), - ("2007-10-01", "国庆节"), - ("2007-10-02", "国庆节"), - ("2007-10-03", "国庆节"), - ("2007-12-30", "元旦"), - ("2007-12-31", "元旦"), + ("2007-10-04", "休息日(2007-09-29日起取代)"), + ("2007-10-05", "休息日(2007-09-30日起取代)"), + ("2007-12-31", "休息日(2007-12-29日起取代)"), ) def test_2008_public_holiday(self): @@ -307,32 +428,23 @@ def test_2008_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2008), ("2008-01-01", "元旦"), - ("2008-02-06", "春节"), + ("2008-02-06", "农历除夕"), ("2008-02-07", "春节"), ("2008-02-08", "春节"), - ("2008-02-09", "春节"), - ("2008-02-10", "春节"), - ("2008-02-11", "春节"), - ("2008-02-12", "春节"), + ("2008-02-11", "休息日(2008-02-02日起取代)"), + ("2008-02-12", "休息日(2008-02-03日起取代)"), ("2008-04-04", "清明节"), - ("2008-04-05", "清明节"), - ("2008-04-06", "清明节"), ("2008-05-01", "劳动节"), - ("2008-05-02", "劳动节"), - ("2008-05-03", "劳动节"), - ("2008-06-07", "端午节"), + ("2008-05-02", "休息日(2008-05-04日起取代)"), ("2008-06-08", "端午节"), - ("2008-06-09", "端午节"), - ("2008-09-13", "中秋节"), + ("2008-06-09", "端午节(观察日)"), ("2008-09-14", "中秋节"), - ("2008-09-15", "中秋节"), - ("2008-09-29", "国庆节"), - ("2008-09-30", "国庆节"), + ("2008-09-15", "中秋节(观察日)"), + ("2008-09-29", "休息日(2008-09-27日起取代)"), + ("2008-09-30", "休息日(2008-09-28日起取代)"), ("2008-10-01", "国庆节"), ("2008-10-02", "国庆节"), ("2008-10-03", "国庆节"), - ("2008-10-04", "国庆节"), - ("2008-10-05", "国庆节"), ) def test_2009_public_holiday(self): @@ -340,32 +452,25 @@ def test_2009_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2009), ("2009-01-01", "元旦"), - ("2009-01-02", "元旦"), - ("2009-01-03", "元旦"), - ("2009-01-25", "春节"), + ("2009-01-02", "休息日(2009-01-04日起取代)"), + ("2009-01-25", "农历除夕"), ("2009-01-26", "春节"), ("2009-01-27", "春节"), - ("2009-01-28", "春节"), - ("2009-01-29", "春节"), - ("2009-01-30", "春节"), - ("2009-01-31", "春节"), + ("2009-01-28", "农历除夕(观察日)"), + ("2009-01-29", "休息日(2009-01-24日起取代)"), + ("2009-01-30", "休息日(2009-02-01日起取代)"), ("2009-04-04", "清明节"), - ("2009-04-05", "清明节"), - ("2009-04-06", "清明节"), + ("2009-04-06", "清明节(观察日)"), ("2009-05-01", "劳动节"), - ("2009-05-02", "劳动节"), - ("2009-05-03", "劳动节"), ("2009-05-28", "端午节"), - ("2009-05-29", "端午节"), - ("2009-05-30", "端午节"), + ("2009-05-29", "休息日(2009-05-31日起取代)"), ("2009-10-01", "国庆节"), ("2009-10-02", "国庆节"), ("2009-10-03", "中秋节; 国庆节"), - ("2009-10-04", "国庆节"), - ("2009-10-05", "国庆节"), - ("2009-10-06", "国庆节"), - ("2009-10-07", "国庆节"), - ("2009-10-08", "国庆节"), + ("2009-10-05", "中秋节(观察日)"), + ("2009-10-06", "国庆节(观察日)"), + ("2009-10-07", "休息日(2009-09-27日起取代)"), + ("2009-10-08", "休息日(2009-10-10日起取代)"), ) def test_2010_public_holiday(self): @@ -373,34 +478,29 @@ def test_2010_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2010), ("2010-01-01", "元旦"), - ("2010-01-02", "元旦"), - ("2010-01-03", "元旦"), - ("2010-02-13", "春节"), + ("2010-02-13", "农历除夕"), ("2010-02-14", "春节"), ("2010-02-15", "春节"), - ("2010-02-16", "春节"), - ("2010-02-17", "春节"), - ("2010-02-18", "春节"), - ("2010-02-19", "春节"), - ("2010-04-03", "清明节"), - ("2010-04-04", "清明节"), + ("2010-02-16", "农历除夕(观察日)"), + ("2010-02-17", "春节(观察日)"), + ("2010-02-18", "休息日(2010-02-20日起取代)"), + ("2010-02-19", "休息日(2010-02-21日起取代)"), ("2010-04-05", "清明节"), ("2010-05-01", "劳动节"), - ("2010-05-02", "劳动节"), - ("2010-05-03", "劳动节"), - ("2010-06-14", "端午节"), - ("2010-06-15", "端午节"), + ("2010-05-03", "劳动节(观察日)"), + ("2010-06-14", "休息日(2010-06-12日起取代)"), + ("2010-06-15", "休息日(2010-06-13日起取代)"), ("2010-06-16", "端午节"), ("2010-09-22", "中秋节"), - ("2010-09-23", "中秋节"), - ("2010-09-24", "中秋节"), + ("2010-09-23", "休息日(2010-09-19日起取代)"), + ("2010-09-24", "休息日(2010-09-25日起取代)"), ("2010-10-01", "国庆节"), ("2010-10-02", "国庆节"), ("2010-10-03", "国庆节"), - ("2010-10-04", "国庆节"), - ("2010-10-05", "国庆节"), - ("2010-10-06", "国庆节"), - ("2010-10-07", "国庆节"), + ("2010-10-04", "国庆节(观察日)"), + ("2010-10-05", "国庆节(观察日)"), + ("2010-10-06", "休息日(2010-09-26日起取代)"), + ("2010-10-07", "休息日(2010-10-09日起取代)"), ) def test_2011_public_holiday(self): @@ -408,34 +508,25 @@ def test_2011_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2011), ("2011-01-01", "元旦"), - ("2011-01-02", "元旦"), - ("2011-01-03", "元旦"), - ("2011-02-02", "春节"), + ("2011-01-03", "元旦(观察日)"), + ("2011-02-02", "农历除夕"), ("2011-02-03", "春节"), ("2011-02-04", "春节"), - ("2011-02-05", "春节"), - ("2011-02-06", "春节"), - ("2011-02-07", "春节"), - ("2011-02-08", "春节"), - ("2011-04-03", "清明节"), - ("2011-04-04", "清明节"), + ("2011-02-07", "休息日(2011-01-30日起取代)"), + ("2011-02-08", "休息日(2011-02-12日起取代)"), + ("2011-04-04", "休息日(2011-04-02日起取代)"), ("2011-04-05", "清明节"), - ("2011-04-30", "劳动节"), ("2011-05-01", "劳动节"), - ("2011-05-02", "劳动节"), - ("2011-06-04", "端午节"), - ("2011-06-05", "端午节"), + ("2011-05-02", "劳动节(观察日)"), ("2011-06-06", "端午节"), - ("2011-09-10", "中秋节"), - ("2011-09-11", "中秋节"), ("2011-09-12", "中秋节"), ("2011-10-01", "国庆节"), ("2011-10-02", "国庆节"), ("2011-10-03", "国庆节"), - ("2011-10-04", "国庆节"), - ("2011-10-05", "国庆节"), - ("2011-10-06", "国庆节"), - ("2011-10-07", "国庆节"), + ("2011-10-04", "国庆节(观察日)"), + ("2011-10-05", "国庆节(观察日)"), + ("2011-10-06", "休息日(2011-10-08日起取代)"), + ("2011-10-07", "休息日(2011-10-09日起取代)"), ) def test_2012_public_holiday(self): @@ -443,32 +534,27 @@ def test_2012_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2012), ("2012-01-01", "元旦"), - ("2012-01-02", "元旦"), - ("2012-01-03", "元旦"), - ("2012-01-22", "春节"), + ("2012-01-02", "元旦(观察日)"), + ("2012-01-03", "休息日(2011-12-31日起取代)"), + ("2012-01-22", "农历除夕"), ("2012-01-23", "春节"), ("2012-01-24", "春节"), - ("2012-01-25", "春节"), - ("2012-01-26", "春节"), - ("2012-01-27", "春节"), - ("2012-01-28", "春节"), - ("2012-04-02", "清明节"), - ("2012-04-03", "清明节"), + ("2012-01-25", "农历除夕(观察日)"), + ("2012-01-26", "休息日(2012-01-21日起取代)"), + ("2012-01-27", "休息日(2012-01-29日起取代)"), + ("2012-04-02", "休息日(2012-03-31日起取代)"), + ("2012-04-03", "休息日(2012-04-01日起取代)"), ("2012-04-04", "清明节"), - ("2012-04-29", "劳动节"), - ("2012-04-30", "劳动节"), + ("2012-04-30", "休息日(2012-04-28日起取代)"), ("2012-05-01", "劳动节"), - ("2012-06-22", "端午节"), + ("2012-06-22", "端午节(观察日)"), ("2012-06-23", "端午节"), - ("2012-06-24", "端午节"), ("2012-09-30", "中秋节"), ("2012-10-01", "国庆节"), ("2012-10-02", "国庆节"), ("2012-10-03", "国庆节"), - ("2012-10-04", "国庆节"), - ("2012-10-05", "国庆节"), - ("2012-10-06", "国庆节"), - ("2012-10-07", "国庆节"), + ("2012-10-04", "中秋节(观察日)"), + ("2012-10-05", "休息日(2012-09-29日起取代)"), ) def test_2013_public_holiday(self): @@ -476,34 +562,30 @@ def test_2013_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2013), ("2013-01-01", "元旦"), - ("2013-01-02", "元旦"), - ("2013-01-03", "元旦"), - ("2013-02-09", "春节"), + ("2013-01-02", "休息日(2013-01-05日起取代)"), + ("2013-01-03", "休息日(2013-01-06日起取代)"), + ("2013-02-09", "农历除夕"), ("2013-02-10", "春节"), ("2013-02-11", "春节"), - ("2013-02-12", "春节"), - ("2013-02-13", "春节"), - ("2013-02-14", "春节"), - ("2013-02-15", "春节"), + ("2013-02-12", "农历除夕(观察日)"), + ("2013-02-13", "春节(观察日)"), + ("2013-02-14", "休息日(2013-02-16日起取代)"), + ("2013-02-15", "休息日(2013-02-17日起取代)"), ("2013-04-04", "清明节"), - ("2013-04-05", "清明节"), - ("2013-04-06", "清明节"), - ("2013-04-29", "劳动节"), - ("2013-04-30", "劳动节"), + ("2013-04-05", "休息日(2013-04-07日起取代)"), + ("2013-04-29", "休息日(2013-04-27日起取代)"), + ("2013-04-30", "休息日(2013-04-28日起取代)"), ("2013-05-01", "劳动节"), - ("2013-06-10", "端午节"), - ("2013-06-11", "端午节"), + ("2013-06-10", "休息日(2013-06-08日起取代)"), + ("2013-06-11", "休息日(2013-06-09日起取代)"), ("2013-06-12", "端午节"), ("2013-09-19", "中秋节"), - ("2013-09-20", "中秋节"), - ("2013-09-21", "中秋节"), + ("2013-09-20", "休息日(2013-09-22日起取代)"), ("2013-10-01", "国庆节"), ("2013-10-02", "国庆节"), ("2013-10-03", "国庆节"), - ("2013-10-04", "国庆节"), - ("2013-10-05", "国庆节"), - ("2013-10-06", "国庆节"), - ("2013-10-07", "国庆节"), + ("2013-10-04", "休息日(2013-09-29日起取代)"), + ("2013-10-07", "休息日(2013-10-12日起取代)"), ) def test_2014_public_holiday(self): @@ -514,23 +596,21 @@ def test_2014_public_holiday(self): ("2014-01-31", "春节"), ("2014-02-01", "春节"), ("2014-02-02", "春节"), - ("2014-02-03", "春节"), - ("2014-02-04", "春节"), - ("2014-02-05", "春节"), - ("2014-02-06", "春节"), + ("2014-02-03", "春节(观察日)"), + ("2014-02-04", "春节(观察日)"), + ("2014-02-05", "休息日(2014-01-26日起取代)"), + ("2014-02-06", "休息日(2014-02-08日起取代)"), ("2014-04-05", "清明节"), + ("2014-04-07", "清明节(观察日)"), ("2014-05-01", "劳动节"), - ("2014-05-02", "劳动节"), - ("2014-05-03", "劳动节"), + ("2014-05-02", "休息日(2014-05-04日起取代)"), ("2014-06-02", "端午节"), ("2014-09-08", "中秋节"), ("2014-10-01", "国庆节"), ("2014-10-02", "国庆节"), ("2014-10-03", "国庆节"), - ("2014-10-04", "国庆节"), - ("2014-10-05", "国庆节"), - ("2014-10-06", "国庆节"), - ("2014-10-07", "国庆节"), + ("2014-10-06", "休息日(2014-09-28日起取代)"), + ("2014-10-07", "休息日(2014-10-11日起取代)"), ) def test_2015_public_holiday(self): @@ -538,26 +618,27 @@ def test_2015_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2015), ("2015-01-01", "元旦"), - ("2015-01-02", "元旦"), - ("2015-01-03", "元旦"), - ("2015-02-18", "春节"), + ("2015-01-02", "休息日(2015-01-04日起取代)"), + ("2015-02-18", "休息日(2015-02-15日起取代)"), ("2015-02-19", "春节"), ("2015-02-20", "春节"), ("2015-02-21", "春节"), - ("2015-02-22", "春节"), - ("2015-02-23", "春节"), - ("2015-02-24", "春节"), + ("2015-02-23", "春节(观察日)"), + ("2015-02-24", "休息日(2015-02-28日起取代)"), ("2015-04-05", "清明节"), + ("2015-04-06", "清明节(观察日)"), ("2015-05-01", "劳动节"), ("2015-06-20", "端午节"), + ("2015-06-22", "端午节(观察日)"), + ("2015-09-03", "中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日"), + ("2015-09-04", "休息日(2015-09-06日起取代)"), ("2015-09-27", "中秋节"), ("2015-10-01", "国庆节"), ("2015-10-02", "国庆节"), ("2015-10-03", "国庆节"), - ("2015-10-04", "国庆节"), - ("2015-10-05", "国庆节"), - ("2015-10-06", "国庆节"), - ("2015-10-07", "国庆节"), + ("2015-10-05", "国庆节(观察日)"), + ("2015-10-06", "中秋节(观察日)"), + ("2015-10-07", "休息日(2015-10-10日起取代)"), ) def test_2016_public_holiday(self): @@ -565,28 +646,25 @@ def test_2016_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2016), ("2016-01-01", "元旦"), - ("2016-02-07", "春节"), ("2016-02-08", "春节"), ("2016-02-09", "春节"), ("2016-02-10", "春节"), - ("2016-02-11", "春节"), - ("2016-02-12", "春节"), - ("2016-02-13", "春节"), + ("2016-02-11", "休息日(2016-02-06日起取代)"), + ("2016-02-12", "休息日(2016-02-14日起取代)"), ("2016-04-04", "清明节"), ("2016-05-01", "劳动节"), + ("2016-05-02", "劳动节(观察日)"), ("2016-06-09", "端午节"), - ("2016-06-10", "端午节"), - ("2016-06-11", "端午节"), + ("2016-06-10", "休息日(2016-06-12日起取代)"), ("2016-09-15", "中秋节"), - ("2016-09-16", "中秋节"), - ("2016-09-17", "中秋节"), + ("2016-09-16", "休息日(2016-09-18日起取代)"), ("2016-10-01", "国庆节"), ("2016-10-02", "国庆节"), ("2016-10-03", "国庆节"), - ("2016-10-04", "国庆节"), - ("2016-10-05", "国庆节"), - ("2016-10-06", "国庆节"), - ("2016-10-07", "国庆节"), + ("2016-10-04", "国庆节(观察日)"), + ("2016-10-05", "国庆节(观察日)"), + ("2016-10-06", "休息日(2016-10-08日起取代)"), + ("2016-10-07", "休息日(2016-10-09日起取代)"), ) def test_2017_public_holiday(self): @@ -594,28 +672,25 @@ def test_2017_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2017), ("2017-01-01", "元旦"), - ("2017-01-27", "春节"), + ("2017-01-02", "元旦(观察日)"), + ("2017-01-27", "休息日(2017-01-22日起取代)"), ("2017-01-28", "春节"), ("2017-01-29", "春节"), ("2017-01-30", "春节"), - ("2017-01-31", "春节"), - ("2017-02-01", "春节"), - ("2017-02-02", "春节"), - ("2017-04-02", "清明节"), - ("2017-04-03", "清明节"), + ("2017-01-31", "春节(观察日)"), + ("2017-02-01", "春节(观察日)"), + ("2017-02-02", "休息日(2017-02-04日起取代)"), + ("2017-04-03", "休息日(2017-04-01日起取代)"), ("2017-04-04", "清明节"), ("2017-05-01", "劳动节"), - ("2017-05-28", "端午节"), - ("2017-05-29", "端午节"), + ("2017-05-29", "休息日(2017-05-27日起取代)"), ("2017-05-30", "端午节"), ("2017-10-01", "国庆节"), ("2017-10-02", "国庆节"), ("2017-10-03", "国庆节"), - ("2017-10-04", "中秋节; 国庆节"), - ("2017-10-05", "国庆节"), - ("2017-10-06", "国庆节"), - ("2017-10-07", "国庆节"), - ("2017-10-08", "国庆节"), + ("2017-10-04", "中秋节"), + ("2017-10-05", "国庆节(观察日)"), + ("2017-10-06", "休息日(2017-09-30日起取代)"), ) def test_2018_public_holiday(self): @@ -623,31 +698,25 @@ def test_2018_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2018), ("2018-01-01", "元旦"), - ("2018-02-15", "春节"), + ("2018-02-15", "休息日(2018-02-11日起取代)"), ("2018-02-16", "春节"), ("2018-02-17", "春节"), ("2018-02-18", "春节"), - ("2018-02-19", "春节"), - ("2018-02-20", "春节"), - ("2018-02-21", "春节"), + ("2018-02-19", "春节(观察日)"), + ("2018-02-20", "春节(观察日)"), + ("2018-02-21", "休息日(2018-02-24日起取代)"), ("2018-04-05", "清明节"), - ("2018-04-06", "清明节"), - ("2018-04-07", "清明节"), - ("2018-04-29", "劳动节"), - ("2018-04-30", "劳动节"), + ("2018-04-06", "休息日(2018-04-08日起取代)"), + ("2018-04-30", "休息日(2018-04-28日起取代)"), ("2018-05-01", "劳动节"), ("2018-06-18", "端午节"), ("2018-09-24", "中秋节"), ("2018-10-01", "国庆节"), ("2018-10-02", "国庆节"), ("2018-10-03", "国庆节"), - ("2018-10-04", "国庆节"), - ("2018-10-05", "国庆节"), - ("2018-10-06", "国庆节"), - ("2018-10-07", "国庆节"), - # From 2019 Notice. - ("2018-12-30", "元旦"), - ("2018-12-31", "元旦"), + ("2018-10-04", "休息日(2018-09-29日起取代)"), + ("2018-10-05", "休息日(2018-09-30日起取代)"), + ("2018-12-31", "休息日(2018-12-29日起取代)"), ) def test_2019_public_holiday(self): @@ -655,13 +724,11 @@ def test_2019_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2019), ("2019-01-01", "元旦"), - ("2019-02-04", "春节"), + ("2019-02-04", "休息日(2019-02-02日起取代)"), ("2019-02-05", "春节"), ("2019-02-06", "春节"), ("2019-02-07", "春节"), - ("2019-02-08", "春节"), - ("2019-02-09", "春节"), - ("2019-02-10", "春节"), + ("2019-02-08", "休息日(2019-02-03日起取代)"), ("2019-04-05", "清明节"), ("2019-05-01", "劳动节"), ("2019-06-07", "端午节"), @@ -669,10 +736,8 @@ def test_2019_public_holiday(self): ("2019-10-01", "国庆节"), ("2019-10-02", "国庆节"), ("2019-10-03", "国庆节"), - ("2019-10-04", "国庆节"), - ("2019-10-05", "国庆节"), - ("2019-10-06", "国庆节"), - ("2019-10-07", "国庆节"), + ("2019-10-04", "休息日(2019-09-29日起取代)"), + ("2019-10-07", "休息日(2019-10-12日起取代)"), ) def test_2020_public_holiday(self): @@ -680,32 +745,27 @@ def test_2020_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2020), ("2020-01-01", "元旦"), - ("2020-01-24", "春节"), + ("2020-01-24", "休息日(2020-01-19日起取代)"), ("2020-01-25", "春节"), ("2020-01-26", "春节"), ("2020-01-27", "春节"), - ("2020-01-28", "春节"), - ("2020-01-29", "春节"), - ("2020-01-30", "春节"), + ("2020-01-28", "春节(观察日)"), + ("2020-01-29", "春节(观察日)"), + ("2020-01-30", "休息日(2020-02-01日起取代)"), ("2020-04-04", "清明节"), - ("2020-04-05", "清明节"), - ("2020-04-06", "清明节"), + ("2020-04-06", "清明节(观察日)"), ("2020-05-01", "劳动节"), - ("2020-05-02", "劳动节"), - ("2020-05-03", "劳动节"), - ("2020-05-04", "劳动节"), - ("2020-05-05", "劳动节"), + ("2020-05-04", "休息日(2020-04-26日起取代)"), + ("2020-05-05", "休息日(2020-05-09日起取代)"), ("2020-06-25", "端午节"), - ("2020-06-26", "端午节"), - ("2020-06-27", "端午节"), + ("2020-06-26", "休息日(2020-06-28日起取代)"), ("2020-10-01", "中秋节; 国庆节"), ("2020-10-02", "国庆节"), ("2020-10-03", "国庆节"), - ("2020-10-04", "国庆节"), - ("2020-10-05", "国庆节"), - ("2020-10-06", "国庆节"), - ("2020-10-07", "国庆节"), - ("2020-10-08", "国庆节"), + ("2020-10-05", "国庆节(观察日)"), + ("2020-10-06", "中秋节(观察日)"), + ("2020-10-07", "休息日(2020-09-27日起取代)"), + ("2020-10-08", "休息日(2020-10-10日起取代)"), ) def test_2021_public_holiday(self): @@ -713,36 +773,29 @@ def test_2021_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2021), ("2021-01-01", "元旦"), - ("2021-01-02", "元旦"), - ("2021-01-03", "元旦"), - ("2021-02-11", "春节"), + ("2021-02-11", "休息日(2021-02-07日起取代)"), ("2021-02-12", "春节"), ("2021-02-13", "春节"), ("2021-02-14", "春节"), - ("2021-02-15", "春节"), - ("2021-02-16", "春节"), - ("2021-02-17", "春节"), - ("2021-04-03", "清明节"), + ("2021-02-15", "春节(观察日)"), + ("2021-02-16", "春节(观察日)"), + ("2021-02-17", "休息日(2021-02-20日起取代)"), ("2021-04-04", "清明节"), - ("2021-04-05", "清明节"), + ("2021-04-05", "清明节(观察日)"), ("2021-05-01", "劳动节"), - ("2021-05-02", "劳动节"), - ("2021-05-03", "劳动节"), - ("2021-05-04", "劳动节"), - ("2021-05-05", "劳动节"), - ("2021-06-12", "端午节"), - ("2021-06-13", "端午节"), + ("2021-05-03", "劳动节(观察日)"), + ("2021-05-04", "休息日(2021-04-25日起取代)"), + ("2021-05-05", "休息日(2021-05-08日起取代)"), ("2021-06-14", "端午节"), - ("2021-09-19", "中秋节"), - ("2021-09-20", "中秋节"), + ("2021-09-20", "休息日(2021-09-18日起取代)"), ("2021-09-21", "中秋节"), ("2021-10-01", "国庆节"), ("2021-10-02", "国庆节"), ("2021-10-03", "国庆节"), - ("2021-10-04", "国庆节"), - ("2021-10-05", "国庆节"), - ("2021-10-06", "国庆节"), - ("2021-10-07", "国庆节"), + ("2021-10-04", "国庆节(观察日)"), + ("2021-10-05", "国庆节(观察日)"), + ("2021-10-06", "休息日(2021-09-26日起取代)"), + ("2021-10-07", "休息日(2021-10-09日起取代)"), ) def test_2022_public_holiday(self): @@ -750,38 +803,28 @@ def test_2022_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2022), ("2022-01-01", "元旦"), - ("2022-01-02", "元旦"), - ("2022-01-03", "元旦"), - ("2022-01-31", "春节"), + ("2022-01-03", "元旦(观察日)"), + ("2022-01-31", "休息日(2022-01-29日起取代)"), ("2022-02-01", "春节"), ("2022-02-02", "春节"), ("2022-02-03", "春节"), - ("2022-02-04", "春节"), - ("2022-02-05", "春节"), - ("2022-02-06", "春节"), - ("2022-04-03", "清明节"), - ("2022-04-04", "清明节"), + ("2022-02-04", "休息日(2022-01-30日起取代)"), + ("2022-04-04", "休息日(2022-04-02日起取代)"), ("2022-04-05", "清明节"), - ("2022-04-30", "劳动节"), ("2022-05-01", "劳动节"), - ("2022-05-02", "劳动节"), - ("2022-05-03", "劳动节"), - ("2022-05-04", "劳动节"), + ("2022-05-02", "劳动节(观察日)"), + ("2022-05-03", "休息日(2022-04-24日起取代)"), + ("2022-05-04", "休息日(2022-05-07日起取代)"), ("2022-06-03", "端午节"), - ("2022-06-04", "端午节"), - ("2022-06-05", "端午节"), ("2022-09-10", "中秋节"), - ("2022-09-11", "中秋节"), - ("2022-09-12", "中秋节"), + ("2022-09-12", "中秋节(观察日)"), ("2022-10-01", "国庆节"), ("2022-10-02", "国庆节"), ("2022-10-03", "国庆节"), - ("2022-10-04", "国庆节"), - ("2022-10-05", "国庆节"), - ("2022-10-06", "国庆节"), - ("2022-10-07", "国庆节"), - # From 2023 Notice. - ("2022-12-31", "元旦"), + ("2022-10-04", "国庆节(观察日)"), + ("2022-10-05", "国庆节(观察日)"), + ("2022-10-06", "休息日(2022-10-08日起取代)"), + ("2022-10-07", "休息日(2022-10-09日起取代)"), ) def test_2023_public_holiday(self): @@ -789,31 +832,53 @@ def test_2023_public_holiday(self): self.assertHolidays( China(categories=PUBLIC, years=2023), ("2023-01-01", "元旦"), - ("2023-01-02", "元旦"), - ("2023-01-21", "春节"), + ("2023-01-02", "元旦(观察日)"), ("2023-01-22", "春节"), ("2023-01-23", "春节"), ("2023-01-24", "春节"), - ("2023-01-25", "春节"), - ("2023-01-26", "春节"), - ("2023-01-27", "春节"), + ("2023-01-25", "春节(观察日)"), + ("2023-01-26", "休息日(2023-01-28日起取代)"), + ("2023-01-27", "休息日(2023-01-29日起取代)"), ("2023-04-05", "清明节"), - ("2023-04-29", "劳动节"), - ("2023-04-30", "劳动节"), ("2023-05-01", "劳动节"), - ("2023-05-02", "劳动节"), - ("2023-05-03", "劳动节"), + ("2023-05-02", "休息日(2023-04-23日起取代)"), + ("2023-05-03", "休息日(2023-05-06日起取代)"), ("2023-06-22", "端午节"), - ("2023-06-23", "端午节"), - ("2023-06-24", "端午节"), + ("2023-06-23", "休息日(2023-06-25日起取代)"), ("2023-09-29", "中秋节"), - ("2023-09-30", "中秋节"), ("2023-10-01", "国庆节"), ("2023-10-02", "国庆节"), ("2023-10-03", "国庆节"), - ("2023-10-04", "国庆节"), - ("2023-10-05", "国庆节"), - ("2023-10-06", "国庆节"), + ("2023-10-04", "国庆节(观察日)"), + ("2023-10-05", "休息日(2023-10-07日起取代)"), + ("2023-10-06", "休息日(2023-10-08日起取代)"), + ) + + def test_2024_public_holiday(self): + # https://www.gov.cn/zhengce/content/202310/content_6911527.htm + self.assertHolidays( + China(categories=PUBLIC, years=2024), + ("2024-01-01", "元旦"), + ("2024-02-10", "春节"), + ("2024-02-11", "春节"), + ("2024-02-12", "春节"), + ("2024-02-13", "春节(观察日)"), + ("2024-02-14", "春节(观察日)"), + ("2024-02-15", "休息日(2024-02-04日起取代)"), + ("2024-02-16", "休息日(2024-02-18日起取代)"), + ("2024-04-04", "清明节"), + ("2024-04-05", "休息日(2024-04-07日起取代)"), + ("2024-05-01", "劳动节"), + ("2024-05-02", "休息日(2024-04-28日起取代)"), + ("2024-05-03", "休息日(2024-05-11日起取代)"), + ("2024-06-10", "端午节"), + ("2024-09-16", "休息日(2024-09-14日起取代)"), + ("2024-09-17", "中秋节"), + ("2024-10-01", "国庆节"), + ("2024-10-02", "国庆节"), + ("2024-10-03", "国庆节"), + ("2024-10-04", "休息日(2024-09-29日起取代)"), + ("2024-10-07", "休息日(2024-10-12日起取代)"), ) def test_2022_half_day_holiday(self): @@ -837,158 +902,122 @@ def test_2023_half_day_holiday(self): def test_l10n_default(self): self.assertLocalizedHolidays( ("2022-01-01", "元旦"), - ("2022-01-02", "元旦"), - ("2022-01-03", "元旦"), - ("2022-01-31", "春节"), + ("2022-01-03", "元旦(观察日)"), + ("2022-01-31", "休息日(2022-01-29日起取代)"), ("2022-02-01", "春节"), ("2022-02-02", "春节"), ("2022-02-03", "春节"), - ("2022-02-04", "春节"), - ("2022-02-05", "春节"), - ("2022-02-06", "春节"), + ("2022-02-04", "休息日(2022-01-30日起取代)"), ("2022-03-08", "国际妇女节"), - ("2022-04-03", "清明节"), - ("2022-04-04", "清明节"), + ("2022-04-04", "休息日(2022-04-02日起取代)"), ("2022-04-05", "清明节"), - ("2022-04-30", "劳动节"), ("2022-05-01", "劳动节"), - ("2022-05-02", "劳动节"), - ("2022-05-03", "劳动节"), - ("2022-05-04", "五四青年节; 劳动节"), + ("2022-05-02", "劳动节(观察日)"), + ("2022-05-03", "休息日(2022-04-24日起取代)"), + ("2022-05-04", "五四青年节; 休息日(2022-05-07日起取代)"), ("2022-06-01", "六一儿童节"), ("2022-06-03", "端午节"), - ("2022-06-04", "端午节"), - ("2022-06-05", "端午节"), ("2022-08-01", "建军节"), ("2022-09-10", "中秋节"), - ("2022-09-11", "中秋节"), - ("2022-09-12", "中秋节"), + ("2022-09-12", "中秋节(观察日)"), ("2022-10-01", "国庆节"), ("2022-10-02", "国庆节"), ("2022-10-03", "国庆节"), - ("2022-10-04", "国庆节"), - ("2022-10-05", "国庆节"), - ("2022-10-06", "国庆节"), - ("2022-10-07", "国庆节"), - ("2022-12-31", "元旦"), + ("2022-10-04", "国庆节(观察日)"), + ("2022-10-05", "国庆节(观察日)"), + ("2022-10-06", "休息日(2022-10-08日起取代)"), + ("2022-10-07", "休息日(2022-10-09日起取代)"), ) def test_l10n_en_us(self): self.assertLocalizedHolidays( "en_US", ("2022-01-01", "New Year's Day"), - ("2022-01-02", "New Year's Day"), - ("2022-01-03", "New Year's Day"), - ("2022-01-31", "Chinese New Year (Spring Festival)"), + ("2022-01-03", "New Year's Day (Observed)"), + ("2022-01-31", "Day off (substituted from 01/29/2022)"), ("2022-02-01", "Chinese New Year (Spring Festival)"), ("2022-02-02", "Chinese New Year (Spring Festival)"), ("2022-02-03", "Chinese New Year (Spring Festival)"), - ("2022-02-04", "Chinese New Year (Spring Festival)"), - ("2022-02-05", "Chinese New Year (Spring Festival)"), - ("2022-02-06", "Chinese New Year (Spring Festival)"), + ("2022-02-04", "Day off (substituted from 01/30/2022)"), ("2022-03-08", "International Women's Day"), - ("2022-04-03", "Tomb-Sweeping Day"), - ("2022-04-04", "Tomb-Sweeping Day"), + ("2022-04-04", "Day off (substituted from 04/02/2022)"), ("2022-04-05", "Tomb-Sweeping Day"), - ("2022-04-30", "Labor Day"), ("2022-05-01", "Labor Day"), - ("2022-05-02", "Labor Day"), - ("2022-05-03", "Labor Day"), - ("2022-05-04", "Labor Day; Youth Day"), + ("2022-05-02", "Labor Day (Observed)"), + ("2022-05-03", "Day off (substituted from 04/24/2022)"), + ("2022-05-04", "Day off (substituted from 05/07/2022); Youth Day"), ("2022-06-01", "Children's Day"), ("2022-06-03", "Dragon Boat Festival"), - ("2022-06-04", "Dragon Boat Festival"), - ("2022-06-05", "Dragon Boat Festival"), ("2022-08-01", "Army Day"), ("2022-09-10", "Mid-Autumn Festival"), - ("2022-09-11", "Mid-Autumn Festival"), - ("2022-09-12", "Mid-Autumn Festival"), + ("2022-09-12", "Mid-Autumn Festival (Observed)"), ("2022-10-01", "National Day"), ("2022-10-02", "National Day"), ("2022-10-03", "National Day"), - ("2022-10-04", "National Day"), - ("2022-10-05", "National Day"), - ("2022-10-06", "National Day"), - ("2022-10-07", "National Day"), - ("2022-12-31", "New Year's Day"), + ("2022-10-04", "National Day (Observed)"), + ("2022-10-05", "National Day (Observed)"), + ("2022-10-06", "Day off (substituted from 10/08/2022)"), + ("2022-10-07", "Day off (substituted from 10/09/2022)"), ) def test_l10n_th(self): self.assertLocalizedHolidays( "th", ("2022-01-01", "วันปีใหม่สากล"), - ("2022-01-02", "วันปีใหม่สากล"), - ("2022-01-03", "วันปีใหม่สากล"), - ("2022-01-31", "วันตรุษจีน"), + ("2022-01-03", "ชดเชยวันปีใหม่สากล"), + ("2022-01-31", "วันหยุด (แทน 29/01/2022)"), ("2022-02-01", "วันตรุษจีน"), ("2022-02-02", "วันตรุษจีน"), ("2022-02-03", "วันตรุษจีน"), - ("2022-02-04", "วันตรุษจีน"), - ("2022-02-05", "วันตรุษจีน"), - ("2022-02-06", "วันตรุษจีน"), + ("2022-02-04", "วันหยุด (แทน 30/01/2022)"), ("2022-03-08", "วันสตรีสากล"), - ("2022-04-03", "วันเช็งเม้ง"), - ("2022-04-04", "วันเช็งเม้ง"), + ("2022-04-04", "วันหยุด (แทน 02/04/2022)"), ("2022-04-05", "วันเช็งเม้ง"), - ("2022-04-30", "วันแรงงาน"), ("2022-05-01", "วันแรงงาน"), - ("2022-05-02", "วันแรงงาน"), - ("2022-05-03", "วันแรงงาน"), - ("2022-05-04", "วันเยาวชนห่งชาติจีน; วันแรงงาน"), + ("2022-05-02", "ชดเชยวันแรงงาน"), + ("2022-05-03", "วันหยุด (แทน 24/04/2022)"), + ("2022-05-04", "วันหยุด (แทน 07/05/2022); วันเยาวชนห่งชาติจีน"), ("2022-06-01", "วันเด็กสากล"), ("2022-06-03", "วันไหว้บ๊ะจ่าง"), - ("2022-06-04", "วันไหว้บ๊ะจ่าง"), - ("2022-06-05", "วันไหว้บ๊ะจ่าง"), ("2022-08-01", "วันสถาปนากองทัพปลดปล่อยประชาชนจีน"), ("2022-09-10", "วันไหว้พระจันทร์"), - ("2022-09-11", "วันไหว้พระจันทร์"), - ("2022-09-12", "วันไหว้พระจันทร์"), + ("2022-09-12", "ชดเชยวันไหว้พระจันทร์"), ("2022-10-01", "วันชาติจีน"), ("2022-10-02", "วันชาติจีน"), ("2022-10-03", "วันชาติจีน"), - ("2022-10-04", "วันชาติจีน"), - ("2022-10-05", "วันชาติจีน"), - ("2022-10-06", "วันชาติจีน"), - ("2022-10-07", "วันชาติจีน"), - ("2022-12-31", "วันปีใหม่สากล"), + ("2022-10-04", "ชดเชยวันชาติจีน"), + ("2022-10-05", "ชดเชยวันชาติจีน"), + ("2022-10-06", "วันหยุด (แทน 08/10/2022)"), + ("2022-10-07", "วันหยุด (แทน 09/10/2022)"), ) def test_l10n_zh_tw(self): self.assertLocalizedHolidays( "zh_TW", ("2022-01-01", "元旦"), - ("2022-01-02", "元旦"), - ("2022-01-03", "元旦"), - ("2022-01-31", "春節"), + ("2022-01-03", "元旦(觀察日)"), + ("2022-01-31", "休息日(2022-01-29日起取代)"), ("2022-02-01", "春節"), ("2022-02-02", "春節"), ("2022-02-03", "春節"), - ("2022-02-04", "春節"), - ("2022-02-05", "春節"), - ("2022-02-06", "春節"), + ("2022-02-04", "休息日(2022-01-30日起取代)"), ("2022-03-08", "國際婦女節"), - ("2022-04-03", "清明節"), - ("2022-04-04", "清明節"), + ("2022-04-04", "休息日(2022-04-02日起取代)"), ("2022-04-05", "清明節"), - ("2022-04-30", "勞動節"), ("2022-05-01", "勞動節"), - ("2022-05-02", "勞動節"), - ("2022-05-03", "勞動節"), - ("2022-05-04", "五四青年節; 勞動節"), + ("2022-05-02", "勞動節(觀察日)"), + ("2022-05-03", "休息日(2022-04-24日起取代)"), + ("2022-05-04", "五四青年節; 休息日(2022-05-07日起取代)"), ("2022-06-01", "六一兒童節"), ("2022-06-03", "端午節"), - ("2022-06-04", "端午節"), - ("2022-06-05", "端午節"), ("2022-08-01", "建軍節"), ("2022-09-10", "中秋節"), - ("2022-09-11", "中秋節"), - ("2022-09-12", "中秋節"), + ("2022-09-12", "中秋節(觀察日)"), ("2022-10-01", "國慶日"), ("2022-10-02", "國慶日"), ("2022-10-03", "國慶日"), - ("2022-10-04", "國慶日"), - ("2022-10-05", "國慶日"), - ("2022-10-06", "國慶日"), - ("2022-10-07", "國慶日"), - ("2022-12-31", "元旦"), + ("2022-10-04", "國慶日(觀察日)"), + ("2022-10-05", "國慶日(觀察日)"), + ("2022-10-06", "休息日(2022-10-08日起取代)"), + ("2022-10-07", "休息日(2022-10-09日起取代)"), )