技术博客
节假日查询:调休上班日怎么算?894-7 调休日列表查询实战

节假日查询:调休上班日怎么算?894-7 调休日列表查询实战

作者: 万维易源
2026-08-27
节假日查询调休日补班
# 节假日查询:调休上班日怎么算?894-7 调休日列表查询实战 > 接口 894(接入点 894-7 调休日列表查询) · 免费 · POST/GET · 返回 JSON · 适用人群:全栈工程师 · 阅读时间:约 6 分钟 ## TL;DR - 用 **894-7** 接入点按年份查出当年所有**调休上班日**(补班日)。 - 返回 `inverse_days` 是**对象数组**(含 name/begin/end),与 894-4 的 String[] 不同,解析时注意。 - 失败用 `ret_code == -1` 且错误写在 `remark` 字段。 ## Why:补班日比放假更易漏 放假大家都记得,但"周日要上班"这种调休最容易被排班系统漏掉,导致考勤错算、工资纠纷。894-7 专门返回某年全部调休日,拿去标记日历里的"补班"最干净。 ## What:接口速览 | 项 | 说明 | |----|------| | 接入点 | **894-7 调休日列表查询** | | 接口地址 | `https://route.showapi.com/894-7?appKey=YOUR_APPKEY` | | 请求方式 | POST / GET | | 计费 | 免费服务(有档位限制) | | 数据范围 | 支持查询自公元 2018 年起任意年份 | **请求参数**:`year`(String,否,要查询的年份)。 ## How:查出全年补班日 **Python(requests)** ```python import requests url = "https://route.showapi.com/894-7" r = requests.post(url, params={"appKey": "YOUR_APPKEY", "year": "2026"}, timeout=5) body = r.json() b = body["showapi_res_body"] if str(b["ret_code"]) != "0": print("失败:", b.get("remark")) # 894-7 失败信息在 remark else: for d in b["inverse_days"]: print(d["name"], d["begin"], "~", d["end"]) ``` **Node.js(fetch)** ```javascript const res = await fetch("https://route.showapi.com/894-7?appKey=YOUR_APPKEY&year=2026", { method: "POST", timeout: 5000 }); const b = (await res.json()).showapi_res_body; if (String(b.ret_code) !== "0") console.error("失败:", b.remark); else for (const d of b.inverse_days) console.log(d.name, d.begin, d.end); ``` **cURL** ```bash curl -X POST "https://route.showapi.com/894-7?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" -d "year=2026" ``` ## 返回示例与解析 ```json { "showapi_res_body": { "ret_code": 0, "remark": "", "inverse_days": [ { "name": "劳动节", "begin": "20250427", "end": "20250427" } ] } } ``` | 字段 | 类型 | 说明 | |------|------|------| | ret_code | Number | `0` 成功,`-1` 失败 | | remark | String | 错误信息(失败时填写) | | inverse_days | Object[] | 当年所有调休日 | | inverse_days[].name | String | 调休的节日 | | inverse_days[].begin / end | String | 调休起止日期 | ## 进阶 / 边界 - **结构差异提醒**:894-7 的 `inverse_days` 是对象数组(name/begin/end);894-4 的是字符串数组(如 `["20250427"]`)。两处不要共用同一解析函数。 - **失败读 remark**:894-7 的业务错误写在 `remark`,不是 `showapi_res_error`。 - **数据自 2018 年起**:查更早年份无数据。 ## FAQ **Q1:894-7 和 894-4 的 inverse_days 能互换吗?** A:不能。894-4 是 String[],894-7 是 Object[],结构不同,需分别解析。 **Q2:ret_code=-1 时怎么看原因?** A:看 `remark` 字段,不是外层的 `showapi_res_error`。 **Q3:year 不传查哪年?** A:默认查当前年。 **Q4:调休日一定是周日吗?** A:通常是周末调休为上班日,但具体以接口返回的日期为准,不要硬编码"周日"。 **Q5:和 894-4 比,该用哪个取补班?** A:想要带节日名称的结构化补班表用 894-7;只想在全年列表里顺带看调修日用 894-4 的 `inverse_days`。 ## 相关能力 / 下一步阅读 - [节假日查询:一键生成全年放假日历,894-4 假日列表实战](https://www.showapi.com/guides/holiday-query-year-list-894) - [节假日查询返回字段全解:ret_code 与 type(1/2/3) 及三接入点结构一文读懂](https://www.showapi.com/guides/holiday-query-response-codes-894) - [节假日查询:为什么只能查 2018 年起?数据覆盖范围与边界说明](https://www.showapi.com/guides/holiday-query-data-range-894) - **本系列共 12 篇**:查看[节假日查询指南总目录](https://www.showapi.com/guides/holiday-query-guides-894)