节假日查询:调休上班日怎么算?894-7 调休日列表查询实战
# 节假日查询:调休上班日怎么算?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)