Skip to content

Commit

Permalink
feat: 支持 2023 年的节假日安排
Browse files Browse the repository at this point in the history
  • Loading branch information
LKI committed Dec 8, 2022
1 parent 012b5ff commit d7322d8
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 2 deletions.
41 changes: 41 additions & 0 deletions chinese_calendar/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,33 @@ def __new__(cls, english, chinese, days):
datetime.date(year=2022, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2022, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2022, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2022, month=12, day=31): Holiday.new_years_day.value,
datetime.date(year=2023, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2023, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2023, month=1, day=21): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=22): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=23): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=24): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=25): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2023, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2023, month=4, day=29): Holiday.labour_day.value,
datetime.date(year=2023, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2023, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2023, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2023, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2023, month=6, day=22): Holiday.dragon_boat_festival.value,
datetime.date(year=2023, month=6, day=23): Holiday.dragon_boat_festival.value,
datetime.date(year=2023, month=6, day=24): Holiday.dragon_boat_festival.value,
datetime.date(year=2023, month=9, day=29): Holiday.mid_autumn_festival.value,
datetime.date(year=2023, month=9, day=30): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=6): Holiday.national_day.value,
}

workdays = {
Expand Down Expand Up @@ -658,6 +685,13 @@ def __new__(cls, english, chinese, days):
datetime.date(year=2022, month=5, day=7): Holiday.labour_day.value,
datetime.date(year=2022, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2022, month=10, day=9): Holiday.national_day.value,
datetime.date(year=2023, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2023, month=4, day=23): Holiday.labour_day.value,
datetime.date(year=2023, month=5, day=6): Holiday.labour_day.value,
datetime.date(year=2023, month=6, day=25): Holiday.dragon_boat_festival.value,
datetime.date(year=2023, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=8): Holiday.national_day.value,
}

in_lieu_days = {
Expand Down Expand Up @@ -786,4 +820,11 @@ def __new__(cls, english, chinese, days):
datetime.date(year=2022, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2022, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2022, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2023, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2023, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2023, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2023, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2023, month=6, day=23): Holiday.dragon_boat_festival.value,
datetime.date(year=2023, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2023, month=10, day=6): Holiday.national_day.value,
}
21 changes: 20 additions & 1 deletion chinese_calendar/scripts/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,24 @@ def __init__(self):
pass

# fmt: off
def _2023(self):
""" http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
一、元旦:2022年12月31日至2023年1月2日放假调休,共3天。
二、春节:1月21日至27日放假调休,共7天。1月28日(星期六)、1月29日(星期日)上班。
三、清明节:4月5日放假,共1天。
四、劳动节:4月29日至5月3日放假调休,共5天。4月23日(星期日)、5月6日(星期六)上班。
五、端午节:6月22日至24日放假调休,共3天。6月25日(星期日)上班。
六、中秋节、国庆节:9月29日至10月6日放假调休,共8天。10月7日(星期六)、10月8日(星期日)上班。
"""
self.year_at(2023) \
.nyd().rest(1, 1).to(1, 2) \
.sf().rest(1, 21).to(1, 27).work(1, 28).to(1, 29).in_lieu(1, 26).to(1, 27) \
.tsd().rest(4, 5) \
.ld().rest(4, 29).to(5, 3).work(4, 23).work(5, 6).in_lieu(5, 2).to(5, 3) \
.dbf().rest(6, 22).to(6, 24).work(6, 25).in_lieu(6, 23) \
.maf().rest(9, 29) \
.nd().rest(9, 30).to(10, 6).work(10, 7).to(10, 8).in_lieu(10, 5).to(10, 6)

def _2022(self):
""" http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
一、元旦:2022年1月1日至3日放假,共3天。
Expand All @@ -83,7 +101,8 @@ def _2022(self):
.ld().rest(4, 30).to(5, 4).work(4, 24).work(5, 7).in_lieu(5, 3).to(5, 4) \
.dbf().rest(6, 3).to(6, 5) \
.maf().rest(9, 10).to(9, 12) \
.nd().rest(10, 1).to(10, 7).work(10, 8).work(10, 9).in_lieu(10, 6).to(10, 7)
.nd().rest(10, 1).to(10, 7).work(10, 8).work(10, 9).in_lieu(10, 6).to(10, 7) \
.nyd().rest(12, 31)

def _2021(self):
""" http://www.gov.cn/zhengce/content/2020-11/25/content_5564127.htm
Expand Down
2 changes: 1 addition & 1 deletion tests/test_holiday_amount.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ def test_holiday_amount(self):
holiday_amounts[2012] -= 1 # 12年可以享受11年补班的假
holiday_amounts[2015] -= 1 # 15年是中国人民抗日战争暨世界反法西斯战争胜利70周年,多放1天
holiday_amounts[2020] -= 2 # 20年春节因为新型冠状病毒疫情防控,延长假期2天
for year in range(2007, 2022 + 1): # 06年数据少,不测了
for year in range(2007, 2023 + 1): # 06年数据少,不测了
self.assertEqual(11, holiday_amounts[year], "Holiday amount of year {}".format(year))
self.assertEqual(1, 1)

0 comments on commit d7322d8

Please sign in to comment.