1 背景
因为业务需求,需要获取当年所有节假日和工作日信息,机缘巧合找到了一个接口,使用还不错,因为有用户量大会导致次数受限,使用跑批入库方案
2 接口地址
https://api.apihubs.cn/holiday/get
3 请求参数
get请求哈
参数 | 描述 |
---|---|
field | 指定返回结果包含的字段,多个使用英文逗号分隔 枚举 |
year | 指定要查询的年份,格式为 Y ,多个使用英文逗号分隔 |
month | 指定要查询的月份,格式为 Ym ,多个使用英文逗号分隔 |
date | 指定要查询的日期,格式为 Ymd ,多个使用英文逗号分隔 |
yearweek | 指定要查询一年中的第几周,格式为 oW ,多个使用英文逗号分隔 |
yearday | 指定要查询一年中的第几天,格式为 z ,多个使用英文逗号分隔 |
holiday | 指定要查询的节假日,99为全部节假日,多个使用英文逗号分隔 枚举 |
holiday_overtime | 指定要查询的节假日调休(加班),99为全部调休,多个使用英文逗号分隔 枚举 |
week | 指定要查询的星期,多个使用英文逗号分隔 枚举 |
workday | 指定查询是否为工作日(包含调休在内需要上班的日子) 枚举 |
weekend | 指定查询是否为周末(星期六和星期日) 枚举 |
holiday_today | 指定查询是否为节日当天 枚举 |
holiday_legal | 指定查询是否为法定节假日(三倍工资)枚举 |
holiday_recess | 指定查询是否为假期节假日(节日是否放假)枚举 |
lunar | 指定年份、月份、日期、天数参数是否查询农历日期 |
cn | 指定返回结果是否包含中文结果,默认返回的都是数字日期和枚举数字有利于逻辑判断不利于显示 |
page | 分页页码 |
size | 分页每页数量 |
4 响应
- code 成功时始终为0,失败时为 枚举值 中的key
- msg 成功时始终为 ok 失败时为 枚举值 中的value
- data 成功时返回数据,失败时部分返回失败数据,如表单验证失败
- data.page 当前页码
- data.size 当前每页数量
- data.total 根据查询条件查到的总数量
- data.list 节假日列表
- 所有字段都可以通过 field 参数进行按需使用
{
"code": "0",
"msg": "ok",
"data": ""
}
5 返回示例
默认会返回数字日期和枚举码
{
"year": 2023,
"month": 202305,
"date": 20230531,
"yearweek": 202322,
"yearday": 151,
"lunar_year": 2023,
"lunar_month": 202304,
"lunar_date": 20230413,
"lunar_yearday": 130,
"week": 3,
"weekend": 2,
"workday": 1,
"holiday": 10,
"holiday_or": 10,
"holiday_overtime": 10,
"holiday_today": 2,
"holiday_legal": 2,
"holiday_recess": 2
}
当开启了cn查询参数,会将查取的字段名加上 _cn 后缀返回可视化的新,并同原字段一起返回。如下
{
"year": 2023,
"month": 202305,
"date": 20230531,
"yearweek": 202322,
"yearday": 151,
"lunar_year": 2023,
"lunar_month": 202304,
"lunar_date": 20230413,
"lunar_yearday": 130,
"week": 3,
"weekend": 2,
"workday": 1,
"holiday": 10,
"holiday_or": 10,
"holiday_overtime": 10,
"holiday_today": 2,
"holiday_legal": 2,
"holiday_recess": 2,
"year_cn": "2023年",
"month_cn": "2023年05月",
"date_cn": "2023年05月31日",
"yearweek_cn": "2023年第22周",
"yearday_cn": "2023年第151天",
"lunar_year_cn": "二零二三年",
"lunar_month_cn": "二零二三年四月",
"lunar_date_cn": "二零二三年四月十三",
"lunar_yearday_cn": "2023年第130天",
"week_cn": "星期三",
"weekend_cn": "非周末",
"workday_cn": "工作日",
"holiday_cn": "非节假日",
"holiday_or_cn": "非节假日",
"holiday_overtime_cn": "非节假日调休",
"holiday_today_cn": "非节日当天",
"holiday_legal_cn": "非法定节假日",
"holiday_recess_cn": "非假期节假日"
}
6 参数描述
参数 | 描述2 |
---|---|
year | 公历年份 |
month | 公历月份 |
date | 公历日期 |
yearweek | 公历一年中的第几周,注意这里的年份是ISO-8601周编号年份,始终以周一至周日为一周。如需获取7天为一周直接使用年份中的天数除7即可。 |
yearday | 公历一年中的第几天 |
lunar_year | 农历年份 |
lunar_month | 农历月份 |
lunar_date | 农历日期 |
lunar_yearday | 农历一年中的第几天 |
week | 星期几 |
weekend | 是否为周末 |
workday | 是否为工作日(包含调休在内需要上班的日子) |
holiday | 节假日,这里使用两位数字枚举表示节假日,其中特殊数字10表示非节假日,特殊数字99表示全部节假日 |
holiday_or | 其他节假日,枚举与节假日相同,表示同一天中的另一个节日,如 2020-10-01 |
holiday_overtime | 节假日调休,枚举与节假日相同 |
holiday_today | 是否为节日当天 |
holiday_legal | 是否为法定节假日(三倍工资) |
holiday_recess | 是否为假期节假日(节日是否放假) |
7 数据库表结构
CREATE TABLE `date_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`year` int(11) DEFAULT NULL COMMENT '公历年份',
`month` int(50) DEFAULT NULL COMMENT '公历月份',
`date` int(50) DEFAULT NULL COMMENT '公历日期',
`year_week` int(50) DEFAULT NULL COMMENT '公历一年中的第几周',
`year_day` int(50) DEFAULT NULL COMMENT '公历一年中的第几天',
`lunar_year` int(50) DEFAULT NULL COMMENT '农历年份',
`lunar_month` int(50) DEFAULT NULL COMMENT '农历月份',
`lunar_date` int(50) DEFAULT NULL COMMENT '农历日期',
`lunar_yearday` int(50) DEFAULT NULL COMMENT '农历一年中的第几天',
`week` int(50) DEFAULT NULL COMMENT '星期几',
`weekend` int(50) DEFAULT NULL COMMENT '是否为周末(1:是,2:否)',
`workday` int(50) DEFAULT NULL COMMENT '是否为工作日(1:是,2:否)',
`holiday` int(50) DEFAULT NULL COMMENT '节假日(10表示非节假日)',
`holiday_or` int(50) DEFAULT NULL COMMENT '其他节假日',
`holiday_overtime` int(50) DEFAULT NULL COMMENT '节假日调休(00:非,其他为是)',
`holiday_today` int(50) DEFAULT NULL COMMENT '是否为节日当天(1:是,2:否)',
`holiday_legal` int(50) DEFAULT NULL COMMENT '是否为法定节假日(1:是,2:否)',
`holiday_recess` int(50) DEFAULT NULL COMMENT '是否为假期节假日(1:是,2:否)',
`updated_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='日期表';