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 响应

  1. code 成功时始终为0,失败时为 枚举值 中的key
  2. msg 成功时始终为 ok 失败时为 枚举值 中的value
  3. data 成功时返回数据,失败时部分返回失败数据,如表单验证失败
  4. data.page 当前页码
  5. data.size 当前每页数量
  6. data.total 根据查询条件查到的总数量
  7. data.list 节假日列表
  8. 所有字段都可以通过 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='日期表';