技术博客
节假日查询:某天到底放不放假?894-6 单日判定接入指南

节假日查询:某天到底放不放假?894-6 单日判定接入指南

作者: 万维易源
2026-08-27
节假日查询单日判定工作日type
# 节假日查询:某天到底放不放假?894-6 单日判定接入指南 > 接口 894(接入点 894-6 节假日查询) · 免费 · POST/GET · 返回 JSON · 适用人群:开发者、产品经理 · 阅读时间:约 7 分钟 ## TL;DR - 用 **894-6** 接入点传 `day` 查某一天,靠 `type` 字段判定:`1`=工作日、`2`=周末、`3`=节假日。 - 不传 `day` 默认查当天,适合「今天放不放假」类实时场景。 - 工作日时 `begin`/`end` 为空串,渲染时要做兜底。 ## Why:最常见的需求 "今天要不要上班?""这个日期下单能不能发货?""提醒我节前最后一天加班"——这些功能的第一步都是**判断某一天的属性**。894-6 就是干这个的:输入一个日期,告诉你它是工作日、周末还是节假日,并带上星期、节日名称。 ## What:接口速览 | 项 | 说明 | |----|------| | 接入点 | **894-6 节假日查询**(按日判定) | | 接口地址 | `https://route.showapi.com/894-6?appKey=YOUR_APPKEY` | | 请求方式 | POST / GET | | 计费 | 免费服务(有使用档位限制) | | 数据范围 | 支持自 2018 年以来的数据 | **请求参数(894-6)** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | day | String | 否 | 要查询是否放假的日期;默认查当天 | | needDesc | Number | 否 | 是否返回节日简介:`1`=返回公众日/国际日/传统节日简介,`2`=仅法定节假日简介,默认不返回 | ## How:判定某一天 ### 步骤 1:发请求查指定日期 **Python(requests)** ```python import requests url = "https://route.showapi.com/894-6" params = {"appKey": "YOUR_APPKEY", "day": "2026-01-01"} r = requests.post(url, params=params, timeout=10) body = r.json() ret = str(body["showapi_res_body"]["ret_code"]) if ret != "0": print("失败:", body.get("showapi_res_error")) else: b = body["showapi_res_body"] type_map = {"1": "工作日", "2": "周末", "3": "节假日"} print(b["day"], "→", type_map.get(b["type"], "未知")) print("节日:", b.get("holiday")) print("起止:", b.get("begin") or "—", b.get("end") or "—") ``` **Node.js(fetch)** ```javascript const url = "https://route.showapi.com/894-6?appKey=YOUR_APPKEY&day=2026-01-01"; const res = await fetch(url, { method: "POST", timeout: 10000 }); const body = await res.json(); const b = body.showapi_res_body; if (String(b.ret_code) !== "0") { console.error("失败:", body.showapi_res_error); } else { const map = { "1": "工作日", "2": "周末", "3": "节假日" }; console.log(b.day, "→", map[b.type], "| 节日:", b.holiday); } ``` **cURL** ```bash curl -X POST "https://route.showapi.com/894-6?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "day=2026-01-01" ``` ### 步骤 2:用 type 着色渲染 前端拿到 `type` 后可直接映射颜色: ```javascript const colorMap = { "1": "#e8e8e8", "2": "#cfe8ff", "3": "#ffd6d6" }; const cell = document.getElementById("day-2026-01-01"); cell.style.background = colorMap[body.type]; // 灰=工作 蓝=周末 红=节假日 ``` ## 返回示例与解析 ```json { "showapi_res_body": { "ret_code": 0, "day": "2026-01-01", "type": "3", "weekDay": 4, "cn": "星期四", "en": "Thursday", "holiday": "元旦", "holiday_remark": "1月1日放假,共1天。", "begin": "20260101", "end": "20260101" } } ``` | 字段 | 说明 | |------|------| | type | `1` 工作日 / `2` 周末 / `3` 节假日(仅 894-6 有) | | weekDay | 星期几的数字 | | cn / en | 星期几中文 / 英文名 | | holiday | 节日名;工作日显示「无」,周末显示「周末」 | | begin / end | 节日或周末起止;**工作日时为空串**,渲染需兜底 | ## 进阶 / 边界 - **工作日 begin/end 为空串**:别直接把空串当日期解析,先判断是否为空。 - **想拿节日简介**:传 `needDesc=1`(公众日/国际日/传统节日)或 `2`(仅法定节假日),否则 `h` 字段不返回。 - **数据自 2018 年起**:查 2018 年之前的日期没有数据,会返回非节假日或失败,需业务层兜底。详见 [节假日查询:为什么只能查 2018 年起?](https://www.showapi.com/guides/holiday-query-data-range-894)。 ## FAQ **Q1:type=1 但 holiday 写「无」正常吗?** A:正常。工作日时 `holiday` 显示「无」,`begin`/`end` 为空串。 **Q2:不传 day 查的是什么?** A:默认查当天,适合「今天放不放假」实时提示。 **Q3:周末和节假日都放假,怎么区分?** A:看 `type`:`2` 是普通周末,`3` 是法定节假日(可能含调休)。 **Q4:needDesc 传 1 和 2 有什么区别?** A:`1` 返回公众日/国际日/传统节日简介;`2` 只返回我国法定节假日简介。详见 [节日简介与农历日期怎么拿?](https://www.showapi.com/guides/holiday-query-festival-intro-894)。 **Q5:ret_code 是字符串还是数字?** A:894-6 是数字 `0`。统一用 `str(...)` 判断可兼容全部接入点。 ## 相关能力 / 下一步阅读 - [节假日查询返回字段全解:ret_code 与 type(1/2/3) 及三接入点结构一文读懂](https://www.showapi.com/guides/holiday-query-response-codes-894) - [节假日查询:一键生成全年放假日历,894-4 假日列表实战](https://www.showapi.com/guides/holiday-query-year-list-894) - [节假日查询:节日简介与农历日期怎么拿?needDesc 与 h 字段实战](https://www.showapi.com/guides/holiday-query-festival-intro-894) - **本系列共 12 篇**:查看[节假日查询指南总目录](https://www.showapi.com/guides/holiday-query-guides-894)