问题原因
在 2024 年 1 月 2 日第一个工作日发现使用了 chinesecalendar 包的程序报错:
NotImplementedError: no available data for year 2024, only year between [2004, 2023] supported
解决
如报错所说,查看源代码,
date = _validate_date(date)
def _validate_date(*dates):
"""
check if the date(s) is supported
:type date: datetime.date | datetime.datetime
:rtype: datetime.date | list[datetime.date]
"""
if len(dates) != 1:
return list(map(_validate_date, dates))
date = _wrap_date(dates[0])
if not isinstance(date, datetime.date):
raise NotImplementedError("unsupported type {}, expected type is datetime.date".format(type(date)))
min_year, max_year = min(holidays.keys()).year, max(holidays.keys()).year
if not (min_year <= date.year <= max_year):
raise NotImplementedError(
"no available data for year {}, only year between [{}, {}] supported".format(date.year, min_year, max_year)
)
return date
holidays = {
datetime.date(year=2004, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2004, month=1, day=22): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=23): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=24): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=25): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2004, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=6): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=7): Holiday.labour_day.value,
datetime.date(year=2004, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2005, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2005, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2005, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2005, month=2, day=9): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=10): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=13): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=14): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2005, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=6): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=7): Holiday.labour_day.value,
datetime.date(year=2005, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2006, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2006, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2006, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2006, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2006, month=1, day=30): Holiday.spring_festival.value,
datetime.date(year=2006, month=1, day=31): Holiday.spring_festival.value,
datetime.date(year=2006, month=2, day=1): Holiday.spring_festival.value,
datetime.date(year=2006, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2006, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2006, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2006, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2006, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2006, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2006, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2006, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2006, month=5, day=6): Holiday.labour_day.value,
datetime.date(year=2006, month=5, day=7): Holiday.labour_day.value,
datetime.date(year=2006, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2007, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2007, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2007, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2007, month=2, day=18): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=19): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=20): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=21): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=22): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=23): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=24): Holiday.spring_festival.value,
datetime.date(year=2007, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2007, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2007, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2007, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2007, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2007, month=5, day=6): Holiday.labour_day.value,
datetime.date(year=2007, month=5, day=7): Holiday.labour_day.value,
datetime.date(year=2007, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2007, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2007, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2007, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2007, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2007, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2007, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2007, month=12, day=30): Holiday.new_years_day.value,
datetime.date(year=2007, month=12, day=31): Holiday.new_years_day.value,
datetime.date(year=2008, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2008, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=7): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=8): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=9): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=10): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2008, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2008, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2008, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2008, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2008, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2008, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2008, month=6, day=7): Holiday.dragon_boat_festival.value,
datetime.date(year=2008, month=6, day=8): Holiday.dragon_boat_festival.value,
datetime.date(year=2008, month=6, day=9): Holiday.dragon_boat_festival.value,
datetime.date(year=2008, month=9, day=13): Holiday.mid_autumn_festival.value,
datetime.date(year=2008, month=9, day=14): Holiday.mid_autumn_festival.value,
datetime.date(year=2008, month=9, day=15): Holiday.mid_autumn_festival.value,
datetime.date(year=2008, month=9, day=29): Holiday.national_day.value,
datetime.date(year=2008, month=9, day=30): Holiday.national_day.value,
datetime.date(year=2008, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2008, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2008, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2008, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2008, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2009, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2009, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2009, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2009, month=1, day=25): Holiday.spring_festival.value,
datetime.date(year=2009, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2009, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2009, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2009, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2009, month=1, day=30): Holiday.spring_festival.value,
datetime.date(year=2009, month=1, day=31): Holiday.spring_festival.value,
datetime.date(year=2009, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2009, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2009, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2009, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2009, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2009, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2009, month=5, day=28): Holiday.dragon_boat_festival.value,
datetime.date(year=2009, month=5, day=29): Holiday.dragon_boat_festival.value,
datetime.date(year=2009, month=5, day=30): Holiday.dragon_boat_festival.value,
datetime.date(year=2009, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=3): Holiday.mid_autumn_festival.value,
datetime.date(year=2009, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2010, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2010, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2010, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2010, month=2, day=13): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=14): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=16): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=17): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=18): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=19): Holiday.spring_festival.value,
datetime.date(year=2010, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2010, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2010, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2010, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2010, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2010, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2010, month=6, day=14): Holiday.dragon_boat_festival.value,
datetime.date(year=2010, month=6, day=15): Holiday.dragon_boat_festival.value,
datetime.date(year=2010, month=6, day=16): Holiday.dragon_boat_festival.value,
datetime.date(year=2010, month=9, day=22): Holiday.mid_autumn_festival.value,
datetime.date(year=2010, month=9, day=23): Holiday.mid_autumn_festival.value,
datetime.date(year=2010, month=9, day=24): Holiday.mid_autumn_festival.value,
datetime.date(year=2010, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2011, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2011, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2011, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2011, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=5): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=7): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=8): Holiday.spring_festival.value,
datetime.date(year=2011, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2011, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2011, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2011, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2011, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2011, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2011, month=6, day=4): Holiday.dragon_boat_festival.value,
datetime.date(year=2011, month=6, day=6): Holiday.dragon_boat_festival.value,
datetime.date(year=2011, month=9, day=10): Holiday.mid_autumn_festival.value,
datetime.date(year=2011, month=9, day=11): Holiday.mid_autumn_festival.value,
datetime.date(year=2011, month=9, day=12): Holiday.mid_autumn_festival.value,
datetime.date(year=2011, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2012, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2012, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2012, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2012, month=1, day=22): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=23): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=24): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=25): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2012, month=4, day=2): Holiday.tomb_sweeping_day.value,
datetime.date(year=2012, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2012, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2012, month=4, day=29): Holiday.labour_day.value,
datetime.date(year=2012, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2012, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2012, month=6, day=22): Holiday.dragon_boat_festival.value,
datetime.date(year=2012, month=6, day=24): Holiday.dragon_boat_festival.value,
datetime.date(year=2012, month=9, day=30): Holiday.mid_autumn_festival.value,
datetime.date(year=2012, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2012, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2012, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2012, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2012, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2012, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2012, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2013, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2013, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2013, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2013, month=2, day=9): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=10): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=13): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=14): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2013, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2013, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2013, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2013, month=4, day=29): Holiday.labour_day.value,
datetime.date(year=2013, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2013, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2013, month=6, day=10): Holiday.dragon_boat_festival.value,
datetime.date(year=2013, month=6, day=11): Holiday.dragon_boat_festival.value,
datetime.date(year=2013, month=6, day=12): Holiday.dragon_boat_festival.value,
datetime.date(year=2013, month=9, day=19): Holiday.mid_autumn_festival.value,
datetime.date(year=2013, month=9, day=20): Holiday.mid_autumn_festival.value,
datetime.date(year=2013, month=9, day=21): Holiday.mid_autumn_festival.value,
datetime.date(year=2013, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2014, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2014, month=1, day=31): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=1): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=5): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2014, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2014, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2014, month=4, day=7): Holiday.tomb_sweeping_day.value,
datetime.date(year=2014, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2014, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2014, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2014, month=6, day=2): Holiday.dragon_boat_festival.value,
datetime.date(year=2014, month=9, day=8): Holiday.mid_autumn_festival.value,
datetime.date(year=2014, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2015, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2015, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2015, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2015, month=2, day=18): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=19): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=20): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=21): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=22): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=23): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=24): Holiday.spring_festival.value,
datetime.date(year=2015, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2015, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2015, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2015, month=6, day=20): Holiday.dragon_boat_festival.value,
datetime.date(year=2015, month=6, day=22): Holiday.dragon_boat_festival.value,
datetime.date(year=2015, month=9, day=3): Holiday.anti_fascist_70th_day.value,
datetime.date(year=2015, month=9, day=4): Holiday.anti_fascist_70th_day.value,
datetime.date(year=2015, month=9, day=27): Holiday.mid_autumn_festival.value,
datetime.date(year=2015, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2015, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2015, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2015, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2015, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2015, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2015, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2016, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2016, month=2, day=7): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=8): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=9): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=10): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=13): Holiday.spring_festival.value,
datetime.date(year=2016, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2016, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2016, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2016, month=6, day=9): Holiday.dragon_boat_festival.value,
datetime.date(year=2016, month=6, day=10): Holiday.dragon_boat_festival.value,
datetime.date(year=2016, month=6, day=11): Holiday.dragon_boat_festival.value,
datetime.date(year=2016, month=9, day=15): Holiday.mid_autumn_festival.value,
datetime.date(year=2016, month=9, day=16): Holiday.mid_autumn_festival.value,
datetime.date(year=2016, month=9, day=17): Holiday.mid_autumn_festival.value,
datetime.date(year=2016, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2017, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2017, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2017, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2017, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2017, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2017, month=1, day=30): Holiday.spring_festival.value,
datetime.date(year=2017, month=1, day=31): Holiday.spring_festival.value,
datetime.date(year=2017, month=2, day=1): Holiday.spring_festival.value,
datetime.date(year=2017, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2017, month=4, day=2): Holiday.tomb_sweeping_day.value,
datetime.date(year=2017, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2017, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2017, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2017, month=5, day=28): Holiday.dragon_boat_festival.value,
datetime.date(year=2017, month=5, day=29): Holiday.dragon_boat_festival.value,
datetime.date(year=2017, month=5, day=30): Holiday.dragon_boat_festival.value,
datetime.date(year=2017, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2017, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2017, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2017, month=10, day=4): Holiday.mid_autumn_festival.value,
datetime.date(year=2017, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2017, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2017, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2017, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2018, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2018, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=16): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=17): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=18): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=19): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=20): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=21): Holiday.spring_festival.value,
datetime.date(year=2018, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2018, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2018, month=4, day=7): Holiday.tomb_sweeping_day.value,
datetime.date(year=2018, month=4, day=29): Holiday.labour_day.value,
datetime.date(year=2018, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2018, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2018, month=6, day=18): Holiday.dragon_boat_festival.value,
datetime.date(year=2018, month=9, day=24): Holiday.mid_autumn_festival.value,
datetime.date(year=2018, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2018, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2018, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2018, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2018, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2018, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2018, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2018, month=12, day=30): Holiday.new_years_day.value,
datetime.date(year=2018, month=12, day=31): Holiday.new_years_day.value,
datetime.date(year=2019, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2019, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=5): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=7): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=8): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=9): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=10): Holiday.spring_festival.value,
datetime.date(year=2019, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2019, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2019, month=4, day=7): Holiday.tomb_sweeping_day.value,
datetime.date(year=2019, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2019, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2019, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2019, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2019, month=6, day=7): Holiday.dragon_boat_festival.value,
datetime.date(year=2019, month=6, day=8): Holiday.dragon_boat_festival.value,
datetime.date(year=2019, month=6, day=9): Holiday.dragon_boat_festival.value,
datetime.date(year=2019, month=9, day=13): Holiday.mid_autumn_festival.value,
datetime.date(year=2019, month=9, day=14): Holiday.mid_autumn_festival.value,
datetime.date(year=2019, month=9, day=15): Holiday.mid_autumn_festival.value,
datetime.date(year=2019, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2020, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2020, month=1, day=24): Holiday.spring_festival.value,
datetime.date(year=2020, month=1, day=25): Holiday.spring_festival.value,
datetime.date(year=2020, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2020, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2020, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2020, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2020, month=1, day=30): Holiday.spring_festival.value,
datetime.date(year=2020, month=1, day=31): Holiday.spring_festival.value,
datetime.date(year=2020, month=2, day=1): Holiday.spring_festival.value,
datetime.date(year=2020, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2020, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2020, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2020, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2020, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2020, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2020, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2020, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2020, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2020, month=6, day=25): Holiday.dragon_boat_festival.value,
datetime.date(year=2020, month=6, day=26): Holiday.dragon_boat_festival.value,
datetime.date(year=2020, month=6, day=27): Holiday.dragon_boat_festival.value,
datetime.date(year=2020, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2021, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2021, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2021, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2021, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=13): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=14): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=16): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=17): Holiday.spring_festival.value,
datetime.date(year=2021, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2021, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2021, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2021, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2021, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2021, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2021, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2021, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2021, month=6, day=12): Holiday.dragon_boat_festival.value,
datetime.date(year=2021, month=6, day=13): Holiday.dragon_boat_festival.value,
datetime.date(year=2021, month=6, day=14): Holiday.dragon_boat_festival.value,
datetime.date(year=2021, month=9, day=19): Holiday.mid_autumn_festival.value,
datetime.date(year=2021, month=9, day=20): Holiday.mid_autumn_festival.value,
datetime.date(year=2021, month=9, day=21): Holiday.mid_autumn_festival.value,
datetime.date(year=2021, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2022, month=1, day=1): Holiday.new_years_day.value,
datetime.date(year=2022, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2022, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2022, month=1, day=31): Holiday.spring_festival.value,
datetime.date(year=2022, month=2, day=1): Holiday.spring_festival.value,
datetime.date(year=2022, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2022, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2022, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2022, month=2, day=5): Holiday.spring_festival.value,
datetime.date(year=2022, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2022, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2022, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2022, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2022, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2022, month=5, day=1): Holiday.labour_day.value,
datetime.date(year=2022, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2022, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2022, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2022, month=6, day=3): Holiday.dragon_boat_festival.value,
datetime.date(year=2022, month=6, day=4): Holiday.dragon_boat_festival.value,
datetime.date(year=2022, month=6, day=5): Holiday.dragon_boat_festival.value,
datetime.date(year=2022, month=9, day=10): Holiday.mid_autumn_festival.value,
datetime.date(year=2022, month=9, day=11): Holiday.mid_autumn_festival.value,
datetime.date(year=2022, month=9, day=12): Holiday.mid_autumn_festival.value,
datetime.date(year=2022, month=10, day=1): Holiday.national_day.value,
datetime.date(year=2022, month=10, day=2): Holiday.national_day.value,
datetime.date(year=2022, month=10, day=3): Holiday.national_day.value,
datetime.date(year=2022, month=10, day=4): Holiday.national_day.value,
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 = {
datetime.date(year=2004, month=1, day=17): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=18): Holiday.spring_festival.value,
datetime.date(year=2004, month=5, day=8): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=9): Holiday.labour_day.value,
datetime.date(year=2004, month=10, day=9): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=10): Holiday.national_day.value,
datetime.date(year=2005, month=2, day=5): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2005, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=8): Holiday.labour_day.value,
datetime.date(year=2005, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=9): Holiday.national_day.value,
datetime.date(year=2006, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2006, month=2, day=5): Holiday.spring_festival.value,
datetime.date(year=2006, month=4, day=29): Holiday.labour_day.value,
datetime.date(year=2006, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2006, month=9, day=30): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2006, month=12, day=30): Holiday.new_years_day.value,
datetime.date(year=2006, month=12, day=31): Holiday.new_years_day.value,
datetime.date(year=2007, month=2, day=17): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=25): Holiday.spring_festival.value,
datetime.date(year=2007, month=4, day=28): Holiday.labour_day.value,
datetime.date(year=2007, month=4, day=29): Holiday.labour_day.value,
datetime.date(year=2007, month=9, day=29): Holiday.national_day.value,
datetime.date(year=2007, month=9, day=30): Holiday.national_day.value,
datetime.date(year=2007, month=12, day=29): Holiday.new_years_day.value,
datetime.date(year=2008, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2008, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2008, month=9, day=27): Holiday.national_day.value,
datetime.date(year=2008, month=9, day=28): Holiday.national_day.value,
datetime.date(year=2009, month=1, day=4): Holiday.new_years_day.value,
datetime.date(year=2009, month=1, day=24): Holiday.spring_festival.value,
datetime.date(year=2009, month=2, day=1): Holiday.spring_festival.value,
datetime.date(year=2009, month=5, day=31): Holiday.dragon_boat_festival.value,
datetime.date(year=2009, month=9, day=27): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=10): Holiday.national_day.value,
datetime.date(year=2010, month=2, day=20): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=21): Holiday.spring_festival.value,
datetime.date(year=2010, month=6, day=12): Holiday.dragon_boat_festival.value,
datetime.date(year=2010, month=6, day=13): Holiday.dragon_boat_festival.value,
datetime.date(year=2010, month=9, day=19): Holiday.mid_autumn_festival.value,
datetime.date(year=2010, month=9, day=25): Holiday.mid_autumn_festival.value,
datetime.date(year=2010, month=9, day=26): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=9): Holiday.national_day.value,
datetime.date(year=2011, month=1, day=30): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2011, month=4, day=2): Holiday.tomb_sweeping_day.value,
datetime.date(year=2011, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=9): Holiday.national_day.value,
datetime.date(year=2011, month=12, day=31): Holiday.new_years_day.value,
datetime.date(year=2012, month=1, day=21): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2012, month=3, day=31): Holiday.tomb_sweeping_day.value,
datetime.date(year=2012, month=4, day=1): Holiday.tomb_sweeping_day.value,
datetime.date(year=2012, month=4, day=28): Holiday.labour_day.value,
datetime.date(year=2012, month=9, day=29): Holiday.national_day.value,
datetime.date(year=2013, month=1, day=5): Holiday.new_years_day.value,
datetime.date(year=2013, month=1, day=6): Holiday.new_years_day.value,
datetime.date(year=2013, month=2, day=16): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=17): Holiday.spring_festival.value,
datetime.date(year=2013, month=4, day=7): Holiday.tomb_sweeping_day.value,
datetime.date(year=2013, month=4, day=27): Holiday.labour_day.value,
datetime.date(year=2013, month=4, day=28): Holiday.labour_day.value,
datetime.date(year=2013, month=6, day=8): Holiday.dragon_boat_festival.value,
datetime.date(year=2013, month=6, day=9): Holiday.dragon_boat_festival.value,
datetime.date(year=2013, month=9, day=22): Holiday.mid_autumn_festival.value,
datetime.date(year=2013, month=9, day=29): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=12): Holiday.national_day.value,
datetime.date(year=2014, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=8): Holiday.spring_festival.value,
datetime.date(year=2014, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2014, month=9, day=28): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=11): Holiday.national_day.value,
datetime.date(year=2015, month=1, day=4): Holiday.new_years_day.value,
datetime.date(year=2015, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=28): Holiday.spring_festival.value,
datetime.date(year=2015, month=9, day=6): Holiday.anti_fascist_70th_day.value,
datetime.date(year=2015, month=10, day=10): Holiday.national_day.value,
datetime.date(year=2016, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=14): Holiday.spring_festival.value,
datetime.date(year=2016, month=6, day=12): Holiday.dragon_boat_festival.value,
datetime.date(year=2016, month=9, day=18): Holiday.mid_autumn_festival.value,
datetime.date(year=2016, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=9): Holiday.national_day.value,
datetime.date(year=2017, month=1, day=22): Holiday.spring_festival.value,
datetime.date(year=2017, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2017, month=4, day=1): Holiday.tomb_sweeping_day.value,
datetime.date(year=2017, month=5, day=27): Holiday.dragon_boat_festival.value,
datetime.date(year=2017, month=9, day=30): Holiday.national_day.value,
datetime.date(year=2018, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=24): Holiday.spring_festival.value,
datetime.date(year=2018, month=4, day=8): Holiday.tomb_sweeping_day.value,
datetime.date(year=2018, month=4, day=28): Holiday.labour_day.value,
datetime.date(year=2018, month=9, day=29): Holiday.national_day.value,
datetime.date(year=2018, month=9, day=30): Holiday.national_day.value,
datetime.date(year=2018, month=12, day=29): Holiday.new_years_day.value,
datetime.date(year=2019, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2019, month=4, day=28): Holiday.labour_day.value,
datetime.date(year=2019, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2019, month=9, day=29): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=12): Holiday.national_day.value,
datetime.date(year=2020, month=1, day=19): Holiday.spring_festival.value,
datetime.date(year=2020, month=4, day=26): Holiday.labour_day.value,
datetime.date(year=2020, month=5, day=9): Holiday.labour_day.value,
datetime.date(year=2020, month=6, day=28): Holiday.dragon_boat_festival.value,
datetime.date(year=2020, month=9, day=27): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=10): Holiday.national_day.value,
datetime.date(year=2021, month=2, day=7): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=20): Holiday.spring_festival.value,
datetime.date(year=2021, month=4, day=25): Holiday.labour_day.value,
datetime.date(year=2021, month=5, day=8): Holiday.labour_day.value,
datetime.date(year=2021, month=9, day=18): Holiday.mid_autumn_festival.value,
datetime.date(year=2021, month=9, day=26): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=9): Holiday.national_day.value,
datetime.date(year=2022, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2022, month=1, day=30): Holiday.spring_festival.value,
datetime.date(year=2022, month=4, day=2): Holiday.tomb_sweeping_day.value,
datetime.date(year=2022, month=4, day=24): Holiday.labour_day.value,
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 = {
datetime.date(year=2004, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2004, month=1, day=28): Holiday.spring_festival.value,
datetime.date(year=2004, month=5, day=6): Holiday.labour_day.value,
datetime.date(year=2004, month=5, day=7): Holiday.labour_day.value,
datetime.date(year=2004, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2004, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2005, month=2, day=14): Holiday.spring_festival.value,
datetime.date(year=2005, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2005, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2005, month=5, day=6): Holiday.labour_day.value,
datetime.date(year=2005, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2005, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2006, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2006, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2006, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2006, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2006, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2006, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2007, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2007, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2007, month=2, day=22): Holiday.spring_festival.value,
datetime.date(year=2007, month=2, day=23): Holiday.spring_festival.value,
datetime.date(year=2007, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2007, month=5, day=7): Holiday.labour_day.value,
datetime.date(year=2007, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2007, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2007, month=12, day=31): Holiday.new_years_day.value,
datetime.date(year=2008, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2008, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2008, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2008, month=9, day=29): Holiday.national_day.value,
datetime.date(year=2008, month=9, day=30): Holiday.national_day.value,
datetime.date(year=2009, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2009, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2009, month=1, day=30): Holiday.spring_festival.value,
datetime.date(year=2009, month=5, day=29): Holiday.dragon_boat_festival.value,
datetime.date(year=2009, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2009, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2010, month=2, day=18): Holiday.spring_festival.value,
datetime.date(year=2010, month=2, day=19): Holiday.spring_festival.value,
datetime.date(year=2010, month=6, day=14): Holiday.dragon_boat_festival.value,
datetime.date(year=2010, month=6, day=15): Holiday.dragon_boat_festival.value,
datetime.date(year=2010, month=9, day=23): Holiday.mid_autumn_festival.value,
datetime.date(year=2010, month=9, day=24): Holiday.mid_autumn_festival.value,
datetime.date(year=2010, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2010, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2011, month=2, day=7): Holiday.spring_festival.value,
datetime.date(year=2011, month=2, day=8): Holiday.spring_festival.value,
datetime.date(year=2011, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2011, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2011, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2012, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2012, month=1, day=26): Holiday.spring_festival.value,
datetime.date(year=2012, month=1, day=27): Holiday.spring_festival.value,
datetime.date(year=2012, month=4, day=2): Holiday.tomb_sweeping_day.value,
datetime.date(year=2012, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2012, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2012, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2013, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2013, month=1, day=3): Holiday.new_years_day.value,
datetime.date(year=2013, month=2, day=14): Holiday.spring_festival.value,
datetime.date(year=2013, month=2, day=15): Holiday.spring_festival.value,
datetime.date(year=2013, month=4, day=5): Holiday.tomb_sweeping_day.value,
datetime.date(year=2013, month=4, day=29): Holiday.labour_day.value,
datetime.date(year=2013, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2013, month=6, day=10): Holiday.dragon_boat_festival.value,
datetime.date(year=2013, month=6, day=11): Holiday.dragon_boat_festival.value,
datetime.date(year=2013, month=9, day=20): Holiday.mid_autumn_festival.value,
datetime.date(year=2013, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2013, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2014, month=2, day=5): Holiday.spring_festival.value,
datetime.date(year=2014, month=2, day=6): Holiday.spring_festival.value,
datetime.date(year=2014, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2014, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2014, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2015, month=1, day=2): Holiday.new_years_day.value,
datetime.date(year=2015, month=2, day=23): Holiday.spring_festival.value,
datetime.date(year=2015, month=2, day=24): Holiday.spring_festival.value,
datetime.date(year=2015, month=9, day=4): Holiday.anti_fascist_70th_day.value,
datetime.date(year=2015, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2016, month=2, day=11): Holiday.spring_festival.value,
datetime.date(year=2016, month=2, day=12): Holiday.spring_festival.value,
datetime.date(year=2016, month=6, day=10): Holiday.dragon_boat_festival.value,
datetime.date(year=2016, month=9, day=16): Holiday.mid_autumn_festival.value,
datetime.date(year=2016, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2016, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2017, month=2, day=1): Holiday.spring_festival.value,
datetime.date(year=2017, month=2, day=2): Holiday.spring_festival.value,
datetime.date(year=2017, month=4, day=3): Holiday.tomb_sweeping_day.value,
datetime.date(year=2017, month=5, day=29): Holiday.dragon_boat_festival.value,
datetime.date(year=2017, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2018, month=2, day=19): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=20): Holiday.spring_festival.value,
datetime.date(year=2018, month=2, day=21): Holiday.spring_festival.value,
datetime.date(year=2018, month=4, day=6): Holiday.tomb_sweeping_day.value,
datetime.date(year=2018, month=4, day=30): Holiday.labour_day.value,
datetime.date(year=2018, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2018, month=10, day=5): Holiday.national_day.value,
datetime.date(year=2018, month=12, day=31): Holiday.new_years_day.value,
datetime.date(year=2019, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2019, month=2, day=8): Holiday.spring_festival.value,
datetime.date(year=2019, month=5, day=2): Holiday.labour_day.value,
datetime.date(year=2019, month=5, day=3): Holiday.labour_day.value,
datetime.date(year=2019, month=10, day=4): Holiday.national_day.value,
datetime.date(year=2019, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2020, month=1, day=29): Holiday.spring_festival.value,
datetime.date(year=2020, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2020, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2020, month=6, day=26): Holiday.dragon_boat_festival.value,
datetime.date(year=2020, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2020, month=10, day=8): Holiday.national_day.value,
datetime.date(year=2021, month=2, day=16): Holiday.spring_festival.value,
datetime.date(year=2021, month=2, day=17): Holiday.spring_festival.value,
datetime.date(year=2021, month=5, day=4): Holiday.labour_day.value,
datetime.date(year=2021, month=5, day=5): Holiday.labour_day.value,
datetime.date(year=2021, month=9, day=20): Holiday.mid_autumn_festival.value,
datetime.date(year=2021, month=10, day=6): Holiday.national_day.value,
datetime.date(year=2021, month=10, day=7): Holiday.national_day.value,
datetime.date(year=2022, month=2, day=3): Holiday.spring_festival.value,
datetime.date(year=2022, month=2, day=4): Holiday.spring_festival.value,
datetime.date(year=2022, month=4, day=4): Holiday.tomb_sweeping_day.value,
datetime.date(year=2022, month=5, day=3): Holiday.labour_day.value,
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,
}
原来是写死的 … 对于长期的跨年项目太不友好了吧…
解决方案
升级安装包:
>> pip uninstall chinesecalendar
Found existing installation: chinesecalendar 1.8.0
Uninstalling chinesecalendar-1.8.0:
Would remove:
/Users/furuiyang/PyEnv/Demo/lib/python3.8/site-packages/chinese_calendar/*
/Users/furuiyang/PyEnv/Demo/lib/python3.8/site-packages/chinesecalendar-1.8.0.dist-info/*
Proceed (Y/n)? Y
Successfully uninstalled chinesecalendar-1.8.0
>> pip install chinesecalendar
Collecting chinesecalendar
Downloading chinesecalendar-1.9.0-py2.py3-none-any.whl.metadata (3.0 kB)
Downloading chinesecalendar-1.9.0-py2.py3-none-any.whl (11 kB)
DEPRECATION: celery 5.1.2 has a non-standard dependency specifier pytz>dev. pip 24.0 will enforce this behaviour change. A possible replacement is to upgrade to a newer version of celery or contact the author to suggest that they release a version with a conforming dependency specifiers. Discussion can be found at https://github.com/pypa/pip/issues/12063
DEPRECATION: uvicorn 0.14.0 has a non-standard dependency specifier click>=7.*. pip 24.0 will enforce this behaviour change. A possible replacement is to upgrade to a newer version of uvicorn or contact the author to suggest that they release a version with a conforming dependency specifiers. Discussion can be found at https://github.com/pypa/pip/issues/12063
Installing collected packages: chinesecalendar
Successfully installed chinesecalendar-1.9.0