工作日节假日调休日休息日的判断API-holiday
1. 背景
从2019年开始接一个需求,调单设置超期反馈时间T+2及邮件发送时间T+1都需要排除休息日;之前一个接口http://api.goseek.cn/ 是可以获取到全年每一天的性质四种<后续介绍>;但是2020年需要更新数据了,这个页面就打不开了,开始想法自己实现,并想做成静态工具类。
2. 设计思路
若没有节假日,则只分为工作日和周末;国务院每年11或12月份公布下一年的节假日及调休日;由于这些日子比较少且是固定的,因此只需要将这些保存下来,通过代码逻辑就可以判断出一年中每一天的性质。
性质分成四种:
# 某一天的性质分成四种: # 0. 正常工作日为0,Weekday # 1. 正常周六日为1,Weekend # 2. 法定节假日为2,holiday # 3. 周六日调休补班为3,makeUp4Rest
政府网: http://www.gov.cn/zhengce/content/2019-11/21/content_5454164.htm
经国务院批准,现将2020年元旦、春节、清明节、劳动节、端午节、国庆节和中秋节放假调休日期的具体安排通知如下。
一、元旦:2020年1月1日放假,共1天。
二、春节:1月24日至30日放假调休,共7天。1月19日(星期日)、2月1日(星期六)上班。
三、清明节:4月4日至6日放假调休,共3天。
四、劳动节:5月1日至5日放假调休,共5天。4月26日(星期日)、5月9日(星期六)上班。
五、端午节:6月25日至27日放假调休,共3天。6月28日(星期日)上班。
六、国庆节、中秋节:10月1日至8日放假调休,共8天。9月27日(星期日)、10月10日(星期六)上班。
##实现方式:
# 正常情况下,根据周六日即可获取正常工作日和周六日;
# 由于法定节假日及调休补班的日子比较少,将两种手动保存下来,作为排除即可。
# 2020年法定节假日
holiday_2020=0101,0124,0125,0126,0127,0128,0129,0130,0125,0125,0125,0125,0125,0125,0404,0405,0406,0501,0502,0503,0504,0505,0625,0627,1001,1002,1003,1004,1005,1006,1007,1008
# 2020年调休补班
makeUp4Rest_2020=0119,0201,0426,0509,0628,0927,1010
# 2021年法定节假日
#holiday_2021=
# 2021年调休补班
#makeUp4Rest_2021=
我采用的是将这些日期存放在配置文件中hol