快速开始
概览
排盘要准备哪些输入、每个参数取什么值,以及三种编程语言的安装方式。
适合:所有人。参数表不需要会写代码也能看懂
三套绑定共用同一个 Rust 核心,因此参数含义与排盘结果完全一致,只是写法不同。 先看清楚要准备什么,再挑你的编程语言。
你需要准备的输入
无论哪种编程语言,排盘都从这几个参数开始。前三个是必须的,后三个都有默认值。
| 参数 | 含义 | 取值 |
|---|---|---|
solar_date / lunar_date | 出生日期 | "YYYY-M-D",如 "2000-8-16"。公历范围 1583–9999 年 |
time_index | 出生时辰 | 整数 0–12,见下表 |
gender | 性别 | "male" / "female"(Rust 为 Gender 枚举) |
fix_leap | 是否修正闰月 | 布尔值,默认 true |
language | 盘面语言 | "zh-CN"(默认) "zh-TW" "en-US" "ja-JP" "ko-KR" "vi-VN" |
config | 分界点与流派 | 见 Config 详解,缺省即 iztro 默认 |
不写代码?这张表就是你要交给工程师的东西
排盘只需要出生日期、时辰、性别三样。把它们按上面的格式写清楚交出去, 工程师那边一行调用就能出盘。想知道这个库能做什么、典型怎么用, 看不写代码怎么用它。
时辰索引
紫微斗数按十二时辰计时,且把子时拆成首尾两段,所以索引是 0–12 共 13 个值。
| 索引 | 时辰 | 时间 | 索引 | 时辰 | 时间 |
|---|---|---|---|---|---|
| 0 | 早子时 | 00:00–01:00 | 7 | 未时 | 13:00–15:00 |
| 1 | 丑时 | 01:00–03:00 | 8 | 申时 | 15:00–17:00 |
| 2 | 寅时 | 03:00–05:00 | 9 | 酉时 | 17:00–19:00 |
| 3 | 卯时 | 05:00–07:00 | 10 | 戌时 | 19:00–21:00 |
| 4 | 辰时 | 07:00–09:00 | 11 | 亥时 | 21:00–23:00 |
| 5 | 巳时 | 09:00–11:00 | 12 | 晚子时 | 23:00–24:00 |
| 6 | 午时 | 11:00–13:00 |
晚子时不是笔误
23:00–24:00 出生的人用索引 12 而不是 0。这两个索引排出的盘不同:
默认配置下晚子时按次日推算日柱,早子时按当日。
这个行为由 day_divide 开关控制,见 Config 详解。
关于 fix_leap
农历闰月没有独立的月建,排盘时要决定闰月的日子算上个月还是下个月。
fix_leap = true(默认)时按 iztro 的规则修正:闰月前半月算本月,后半月算下月。
设为 false 则整个闰月都算本月。
只有出生在闰月的人会受影响,其余情况该参数无作用。
选择编程语言
输入校验
给开发者日期与时辰在核心层前置校验,三种编程语言共用同一道防线;非法输入不会 panic, 而是按各自的惯例报错:
| 编程语言 | 表现 |
|---|---|
| Rust | 返回 Err(IztroError),.code() 给出机器可读分类 |
| Python | 抛 IztroError(继承 ValueError),.code 同上 |
| Go | 返回 *iztro.Error,可用 errors.Is 匹配哨兵 |
| C FFI | 返回 {"error":"...","code":"..."} JSON |
核心层校验的是日期格式与真实存在性、公历 1583–9999 范围、时辰索引 0–12。 性别、盘面语言、配置开关这些以字符串传入的参数,在绑定层解析时校验 —— Rust 侧它们本来就是枚举,不存在非法取值。
详见错误处理。