轻量查询
不排整盘就能拿到的生肖、星座与命宫主星。
有些问题不需要整张星盘。这五个函数各自只跑到必要的那一步就返回, 结果与完整排盘的对应字段永远一致——它们走的是同一套核心逻辑。
本页示例统一用 Language::ZhCN 排盘,因此输出里的展示值都是中文。
get_zodiac_by_solar_date
用途 由公历日期取生肖。
斗数含义 生肖由年支决定,而年支的换算时点受 year_divide 影响。
正月初一与立春之间出生的人,两种配置会得到不同的生肖——这不是 bug,是流派差异。
签名
pub fn get_zodiac_by_solar_date(
solar_date: &str,
language: Language,
config: Config,
) -> Result<String, IztroError>参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
solar_date | &str | 是 | — | 公历日期,格式 YYYY-M-D |
language | Language | 是 | — | 输出语言 |
config | Config | 是 | — | 仅 year_divide 影响结果 |
返回值 String——按语言翻译的生肖名。
示例
println!("{}", get_zodiac_by_solar_date("2000-8-16", Language::ZhCN, Config::default())?);输出
龙边界与陷阱
跨年边界会随配置改变
默认按正月初一换年。改成 YearDivide::Exact 后按立春换年,
1 月下旬到 2 月上旬出生的人可能拿到不同生肖。
get_sign_by_solar_date / get_sign_by_lunar_date
用途 取星座。
斗数含义 星座是西洋占星概念,只由公历日期决定,与斗数算法无关。 农历版本先把农历转成公历再判定,因此两者对同一天的结果相同。
签名
pub fn get_sign_by_solar_date(solar_date: &str, language: Language) -> Result<String, IztroError>
pub fn get_sign_by_lunar_date(
lunar_date: &str,
is_leap_month: bool,
language: Language,
) -> Result<String, IztroError>参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
solar_date / lunar_date | &str | 是 | — | 日期,格式 YYYY-M-D |
is_leap_month | bool | 是 | — | 仅农历版本:该月是否闰月 |
language | Language | 是 | — | 输出语言 |
无 config 参数——星座不受任何配置影响。
返回值 String。
示例
println!("{}", get_sign_by_solar_date("2000-8-16", Language::ZhCN)?);
println!("{}", get_sign_by_lunar_date("2000-7-17", false, Language::ZhCN)?);输出
狮子座
狮子座get_major_star_by_solar_date / get_major_star_by_lunar_date
用途 只取命宫主星,不排整盘。
斗数含义 命宫主星是斗数最常被单独问起的一项。 命宫为空宫时按惯例借对宫主星来看,本函数已经处理了这一步。
签名
pub fn get_major_star_by_solar_date(
solar_date: &str,
time_index: u8,
fix_leap: bool,
language: Language,
config: Config,
) -> Result<String, IztroError>
pub fn get_major_star_by_lunar_date(
lunar_date: &str,
time_index: u8,
leap: LeapMonth,
language: Language,
config: Config,
) -> Result<String, IztroError>参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
solar_date / lunar_date | &str | 是 | — | 日期 |
time_index | u8 | 是 | — | 时辰索引 0–12,命宫由月份与时辰共同决定 |
fix_leap | bool | 是 | — | 仅阳历版本:阳历日期落在闰月十五之后时是否视作次月 |
leap | LeapMonth | 是 | — | 仅农历版本:NotLeap / Leap / LeapFixed,见 by_lunar |
language | Language | 是 | — | 输出语言 |
config | Config | 是 | — | 排盘配置 |
返回值 String——多颗主星以逗号分隔;空宫时返回对宫主星。
示例
let cfg = Config::default();
println!("{}", get_major_star_by_solar_date("2000-8-16", 2, true, Language::ZhCN, cfg.clone())?);
println!("{}", get_major_star_by_solar_date("2000-8-16", 2, true, Language::EnUS, cfg.clone())?);输出
紫微
emperor边界与陷阱