紫微斗数概念

运限

六个时间层级各自算什么,同一格子的宫名为什么会变,童限怎么起,流耀与流年十二神从哪来。

适合:所有人。代码在页尾

本命盘一生不变,运限是把时间叠加到本命盘上得到的动态信息。 给一个目标日期,x-iztro 一次返回六个层级。

同一个格子,宫名会变

这是运限里最容易绕住人的一点,先说清楚:

运限解读要把运限所在的那一宫当作「这一步的命宫」,其余十一宫跟着重排。 所以同一个格子,在本命盘上是财帛宫,在某个大限里可能就是命宫

每个运限层级都给出一份重排后的十二宫名,按盘上位置排列。 本命盘的宫名不受影响,两套并存 —— 读结果时要分清手上拿的是哪一套。

六个层级

层级周期依据
大限十年五行局起运虚岁 + 性别与年支阴阳定的行进方向
小限一年年支三合定起点,性别定方向
流年一年目标日期所在的农历年
流月一月目标日期所在的农历月
流日一日目标日期
流时一时辰目标时辰索引

大限与小限都是「按年龄推进」的,但规则完全不同,各走各的; 流年到流时则是「按日历推进」的。两套并行,共同构成一次查询的结果。

每个层级有什么

除小限与流年外,每个层级的结构相同:

字段含义
index该运限落在哪一个盘上位置(0–11,第一格是寅宫)
name层级名,按盘面语言翻译(「大限」「流年」……)
heavenly_stem / earthly_branch该运限的干支
palace_names以该运限位置为命宫重排的十二宫名
mutagen该运限干引发的四化星,顺序为禄、权、科、忌
stars流耀在十二宫的分布,没有流耀的层级为空

小限额外带虚岁nominal_age)。

流年额外带流年十二神:按流年支重起的岁前十二神与将前十二神。 这两组与本命盘上宫位自带的那两组是两回事 —— 本命的按出生年支起,流年的按目标年支起。

童限

大限从五行局决定的虚岁才开始(水二局 2 岁、火六局 6 岁)。 在此之前的年份不属于任何大限,这段时间用童限推算。

童限按虚岁在六个宫之间循环,口诀是「一命二财三疾厄,四妻五福六官禄」:

虚岁12345678
童限宫命宫财帛疾厄夫妻福德官禄命宫财帛循环

当目标日期落在起运之前,大限字段返回的就是童限,层级名显示为「童限」。 字段结构不变,所以调用方不需要特殊处理,只在需要区分时看层级名。

流耀

流年、流月等层级会带一批只在该层级存在的星,称为流耀 (运昌、运曲、运魁、运钺、运鸾、运喜、运禄、运羊、运陀、运马, 以及流年层的流昌、流曲……)。它们按十二宫分组存放。

星的所属层级字段标明它属于哪一层:本命星是 origin,大限流耀是 decadal, 流年流耀是 yearly

分界点会改变结果

运限的干支与虚岁受两个配置开关影响:

  • horoscope_divide 决定运限年按正月初一还是立春换年,以及流月按初一还是节气分界
  • age_divide 决定虚岁按农历年跨年加一,还是过了生日才加一

在年初或生日前后查询时,这两个开关会直接改变返回的干支与虚岁。 详见 Config 详解

在代码里怎么取

运限从已排好的盘发起,出生参数、盘面语言与配置都从盘上取,只需给目标日期与时辰:

h = chart.horoscope("2024-10-1", 0)
let h = astrolabe.horoscope("2024-10-1", 0)?;
h, err := astrolabe.Horoscope("2024-10-1", 0)

读六个层级:

h = chart.horoscope("2024-10-1", 0)

print(h.decadal.name, h.decadal.heavenly_stem + h.decadal.earthly_branch, h.decadal.mutagen)
print(h.age.name, "虚岁", h.age.nominal_age)
print(h.yearly.name, h.yearly.heavenly_stem + h.yearly.earthly_branch)
print("流年重排宫名:", h.yearly.palace_names)
print("流年岁前十二神:", h.yearly.yearly_dec_star.suiqian12)
大限 庚辰 ['太阳', '武曲', '太阴', '天同']
小限 虚岁 25
流年 甲辰
流年重排宫名: ['夫妻', '兄弟', '命宫', '父母', '福德', '田宅', '官禄', '仆役', '迁移', '疾厄', '财帛', '子女']
流年岁前十二神: ['吊客', '病符', '岁建', '晦气', '丧门', '贯索', '官符', '小耗', '大耗', '龙德', '白虎', '天德']

遍历流耀:

for palace_index, stars in enumerate(h.yearly.stars or []):
    for s in stars:
        print(palace_index, s.name, s.scope)

三侧读法一致

小限与流年各自多带一项专属数据(虚岁、流年十二神),Rust 里通用字段收在 .base 下, 但两个类型都实现了 Derefh.yearly.heavenly_stem 直接可读;序列化到 Python / Go 时 这一层被展平,同样写 h.yearly.heavenly_stem

本页目录