星座运势查询的 date 参数怎么用?按生日识别星座与 12 个边界实测

约 13 分钟 进阶星座运势查询生日查星座date参数边界实测
# 星座运势查询的 date 参数怎么用?按生日识别星座与 12 个边界实测 接入点 872-1 · 免费服务 · POST / GET · 返回 JSON · 适用:社交与社区产品、前端预校验 · 阅读时间:约 7 分钟 · 最后实测核对:2026-09-18 ## 核心要点 - 不传 `star` 时可以传 `date=MMdd`,星座运势查询接口(apiCode=872)会按这个日期反推星座再返回运势。 - 两者同时传时以 `star` 为准。`date` 只接受 `MMdd` 四位数字,`20260819` 这种带年份的写法会被拒。 - 接口实际使用的星座日期边界与常见对照表存在系统性偏移,2026-09-18 已逐日实测出全部 12 个边界。 ## 为什么用 date 更省事 用户更习惯填生日,而不是从下拉框里挑星座。让接口按生日自己判断,前端少一个控件,还能把运势做成生日专属的入口。 前提是知道接口认哪些日期格式、边界落在哪一天。这三点在接口文档里没有完整给出,本文的边界表来自 2026-09-18 的逐日实测。 ## 接口速览 | 项 | 值 | |---|---| | 接口地址 | `https://route.showapi.com/872-1?appKey={your_appKey}` | | 相关参数 | `date`(`MMdd`)、`star`(十二星座英文码) | | 优先级 | 同时传时以 `star` 为准 | | 超时 | 读 15 秒 / 连接 15 秒 | `date` 和 `star` 至少要给一个,都不传时业务层会返回失败。 ## 参数优先级实测 | 传参组合 | 2026-09-18 实测行为 | |---|---| | 只传 `date=0819` | 按日期反推星座,`star` 回显反推结果 | | 只传 `star=shizi` | 直接按狮子座返回 | | `date=0101` + `star=shizi` | `star` 回显 `shizi`,`date` 被忽略 | | `date=abc` | `ret_code: -1`,`remark: 输入星座月份不正确` | | `date=20260819` | `ret_code: -1`,`remark: 输入星座月份不正确` | | `date=0230` | `ret_code: 0`,`star` 为 `shuangyu`(落在双鱼区间) | `date` 只认四位数字。带年份、带字母、带分隔符都会被判为格式不对。 ## 接口实际使用的 12 星座边界(2026-09-18 逐日实测) | 星座 | 中文名 | 接口实测区间 | |---|---|---| | `mojie` | 摩羯座 | 12-22 ~ 01-20 | | `shuiping` | 水瓶座 | 01-21 ~ 02-19 | | `shuangyu` | 双鱼座 | 02-20 ~ 03-20 | | `baiyang` | 白羊座 | 03-21 ~ 04-20 | | `jinniu` | 金牛座 | 04-21 ~ 05-21 | | `shuangzi` | 双子座 | 05-22 ~ 06-21 | | `juxie` | 巨蟹座 | 06-22 ~ 07-22 | | `shizi` | 狮子座 | 07-23 ~ 08-23 | | `chunv` | 处女座 | 08-24 ~ 09-23 | | `tiancheng` | 天秤座 | 09-24 ~ 10-23 | | `tianxie` | 天蝎座 | 10-24 ~ 11-22 | | `sheshou` | 射手座 | 11-23 ~ 12-21 | 对照常用的星座日期表,接口的边界在多处向后顺延一天:水瓶、双鱼、金牛、双子、处女、天秤的起点晚一天;白羊、狮子、摩羯的终点晚一天;巨蟹、天蝎、射手与常见表一致。 支撑这张表的边界日实测结果: | 传入 `date` | 返回 `star` | 传入 `date` | 返回 `star` | |---|---|---|---| | `0119` | `mojie` | `0722` | `juxie` | | `0120` | `mojie` | `0723` | `shizi` | | `0121` | `shuiping` | `0822` | `shizi` | | `0218` | `shuiping` | `0823` | `shizi` | | `0219` | `shuiping` | `0824` | `chunv` | | `0220` | `shuangyu` | `0922` | `chunv` | | `0320` | `shuangyu` | `0923` | `chunv` | | `0321` | `baiyang` | `0924` | `tiancheng` | | `0419` | `baiyang` | `1023` | `tiancheng` | | `0420` | `baiyang` | `1024` | `tianxie` | | `0421` | `jinniu` | `1122` | `tianxie` | | `0520` | `jinniu` | `1123` | `sheshou` | | `0521` | `jinniu` | `1221` | `sheshou` | | `0522` | `shuangzi` | `1222` | `mojie` | | `0621` | `shuangzi` | `0622` | `juxie` | 月中抽样复核:`0105` 为 `mojie`、`0305` 为 `shuangyu`、`0505` 为 `jinniu`、`0705` 为 `juxie`、`0905` 为 `chunv`、`1105` 为 `tianxie`,与上表一致。 ## 按生日查运势的写法 Python(requests): ```python import requests def horoscope_by_birthday(month: int, day: int, appkey: str) -> dict: """传生日(月、日),由接口反推星座并返回今日运势。""" date = f"{month:02d}{day:02d}" # 拼成 MMdd data = requests.get( "https://route.showapi.com/872-1", params={"appKey": appkey, "date": date}, timeout=15, ).json() if data.get("showapi_res_code") != 0: raise RuntimeError(data.get("showapi_res_error")) body = data["showapi_res_body"] if str(body.get("ret_code")) != "0": raise RuntimeError(f"业务错误: {body.get('remark')}") print("接口识别的星座:", body["star"]) # 英文码,如 shizi return body body = horoscope_by_birthday(8, 19, "YOUR_APPKEY") print(body["day"]["summary_star"], body["day"]["lucky_color"]) ``` cURL: ```bash curl -G "https://route.showapi.com/872-1" \ --data-urlencode "appKey=YOUR_APPKEY" \ --data-urlencode "date=0819" \ --max-time 15 ``` Node.js(fetch): ```javascript // 生日 -> MMdd,注意补零 const pad = n => String(n).padStart(2, "0"); const url = new URL("https://route.showapi.com/872-1"); url.searchParams.set("appKey", "YOUR_APPKEY"); url.searchParams.set("date", `${pad(8)}${pad(19)}`); const data = await (await fetch(url, { signal: AbortSignal.timeout(15000) })).json(); if (String(data.showapi_res_body?.ret_code) !== "0") { throw new Error(data.showapi_res_body.remark); } const { star, day } = data.showapi_res_body; console.log(star, day.summary_star, day.lucky_color); ``` ## 返回示例(2026-09-18 实测 `date=0819`) ```json { "showapi_res_code": 0, "showapi_res_body": { "day": { "summary_star": 4, "love_star": 3, "money_star": 4, "work_star": 5, "grxz": "狮子座", "lucky_color": "金色", "day_notice": "保持耐心,稳步前行。", "time": "20260918" }, "star": "shizi", "ret_code": 0 } } ``` `star` 回显的是英文码,不是中文名。要显示中文名,可以按上面那张表做本地映射。 ## 前端要不要先自己判星座 前端预校验能减少一次依赖,但要以接口返回的 `star` 为准。边界日附近的差异最容易出现,比如 04-20 在常见对照表里属于金牛座,接口判为白羊座。 需要和接口保持完全一致时,直接把上表的区间搬到前端做映射,或者干脆把生日原样传给 `date`,用返回的 `star` 回填界面。 ## FAQ **Q1:`date` 能带年份吗?** 不能。2026-09-18 实测传 `date=20260819` 返回 `ret_code: -1`、`remark: 输入星座月份不正确`。只认 `MMdd` 四位数字。 **Q2:传了 `date`,返回的 `star` 和我预期的不一样?** 以返回的 `star` 为准。接口的边界与常见对照表在多处相差一天,比如 `0420` 返回 `baiyang` 而不是金牛座,`0120` 返回 `mojie` 而不是水瓶座。 **Q3:`date` 和 `star` 都传,听谁的?** 听 `star`。2026-09-18 实测传 `date=0101` 加 `star=shizi`,返回的 `star` 是 `shizi`。 **Q4:`date` 传 0230 这种不存在的日期会怎样?** 实测返回 `ret_code: 0`,`star` 为 `shuangyu`。接口按四位数字的区间做映射,不校验日期是否真实存在。 **Q5:生日里的年份需要收集吗?** 不需要,接口只吃 `MMdd`。不收年份也能减少一处需要保管的用户信息。 ## 下一步阅读 - [星座运势查询:用 Python / cURL / Node.js 跑通第一次调用](https://www.showapi.com/guides/horoscope-quickstart-872) - [星座运势查询:一次取齐五个周期的 needX 开关规则](https://www.showapi.com/guides/horoscope-multi-period-872) - [在星座社区与社交 App 里接入星座运势查询](https://www.showapi.com/guides/horoscope-community-app-872) - [星座运势查询的缓存怎么设](https://www.showapi.com/guides/horoscope-cache-872) - **本系列共 13 篇**:查看[星座运势 API 指南总目录](https://www.showapi.com/guides/horoscope-guides-872)
加载中...