二十八星宿 — 完整测算规则
📍 位置:玄学测算体系 / 14-二十八星宿
📌 核心发现:二十八星宿值日可通过「日干支地支 + 星期几」查表精确计算,本命星宿(宿曜经体系)则按农历月日查表,两套体系均已有成熟开源实现
📥 输入:6tail/lunar-javascript 源码、CSDN 博客、知乎、百度百科、宿曜经、bmcx.com、911cha.com
📤 流向:→ findings.md
一、基本概念
1.1 起源
二十八星宿(二十八舍 / 二十八宿)是中国古代天文学家将黄道和天赤道附近的天区划分为 28 个区域的体系,用于观测日、月、五大行星的运行轨迹。最早可追溯至战国时期,《吕氏春秋》《淮南子》等已有完整记载。宋代《会天历》(宝祐四年,1256 年)已将二十八宿逐日排列入历法。
1.2 四象分组
二十八宿按方位分为四象(四灵),每象七宿:
| 方位 | 四象 | 颜色 | 季节 | 七宿 |
|---|
| 东方 | 青龙 | 青/苍 | 春 | 角、亢、氐、房、心、尾、箕 |
| 北方 | 玄武 | 黑 | 冬 | 斗、牛、女、虚、危、室、壁 |
| 西方 | 白虎 | 白 | 秋 | 奎、娄、胃、昴、毕、觜、参 |
| 南方 | 朱雀 | 红 | 夏 | 井、鬼、柳、星、张、翼、轸 |
注意:传统排列顺序为 角→亢→氐→…→轸(东→北→西→南),28 宿首尾相接循环。
1.3 二十八宿完整属性表
每个星宿有三重属性:七政(日月五行)+ 动物 + 方位宫。名称格式为「宿名 + 七政 + 动物」,如「角木蛟」。
| 序号 | 宿名 | 七政 | 动物 | 方位 | 四象 | 吉凶 |
|---|
| 1 | 角 | 木 | 蛟 | 东 | 青龙 | 吉 |
| 2 | 亢 | 金 | 龙 | 东 | 青龙 | 凶 |
| 3 | 氐 | 土 | 貉 | 东 | 青龙 | 凶 |
| 4 | 房 | 日 | 兔 | 东 | 青龙 | 吉 |
| 5 | 心 | 月 | 狐 | 东 | 青龙 | 凶 |
| 6 | 尾 | 火 | 虎 | 东 | 青龙 | 吉 |
| 7 | 箕 | 水 | 豹 | 东 | 青龙 | 吉 |
| 8 | 斗 | 木 | 獬 | 北 | 玄武 | 吉 |
| 9 | 牛 | 金 | 牛 | 北 | 玄武 | 凶 |
| 10 | 女 | 土 | 蝠 | 北 | 玄武 | 凶 |
| 11 | 虚 | 日 | 鼠 | 北 | 玄武 | 凶 |
| 12 | 危 | 月 | 燕 | 北 | 玄武 | 凶 |
| 13 | 室 | 火 | 猪 | 北 | 玄武 | 吉 |
| 14 | 壁 | 水 | 貐(獐) | 北 | 玄武 | 吉 |
| 15 | 奎 | 木 | 狼 | 西 | 白虎 | 凶 |
| 16 | 娄 | 金 | 狗 | 西 | 白虎 | 吉 |
| 17 | 胃 | 土 | 雉 | 西 | 白虎 | 吉 |
| 18 | 昴 | 日 | 鸡 | 西 | 白虎 | 凶 |
| 19 | 毕 | 月 | 乌 | 西 | 白虎 | 吉 |
| 20 | 觜 | 火 | 猴 | 西 | 白虎 | 凶 |
| 21 | 参 | 水 | 猿 | 西 | 白虎 | 吉 |
| 22 | 井 | 木 | 犴 | 南 | 朱雀 | 吉 |
| 23 | 鬼 | 金 | 羊 | 南 | 朱雀 | 凶 |
| 24 | 柳 | 土 | 獐 | 南 | 朱雀 | 凶 |
| 25 | 星 | 日 | 马 | 南 | 朱雀 | 凶 |
| 26 | 张 | 月 | 鹿 | 南 | 朱雀 | 吉 |
| 27 | 翼 | 火 | 蛇 | 南 | 朱雀 | 凶 |
| 28 | 轸 | 水 | 蚓 | 南 | 朱雀 | 吉 |
七政循环规律:木→金→土→日→月→火→水,七个一循环,正好与四象各七宿对应。
吉凶统计:14 吉(角、房、尾、箕、斗、室、壁、娄、胃、毕、参、井、张、轸)+ 14 凶(亢、氐、心、牛、女、虚、危、奎、昴、觜、鬼、柳、星、翼)。
二、值日星宿的计算(择日体系)
2.1 核心原理
值日星宿是每日轮值的概念,28 宿按固定顺序(角→亢→氐→…→轸→角→…)循环值日,周期 28 天,周而复始。这是择日学(选日子) 使用的体系。
2.2 计算方法一:地支 + 星期查表法(推荐,lunar-javascript 实际采用)
这是目前最主流的实现方式,来源于传统历法的「禽星值日」规则。
核心公式:值日星宿 = XIU_TABLE[日干支的地支][星期几]
其中星期几的定义:0=日曜(周日), 1=月曜(周一), 2=火曜(周二), 3=水曜(周三), 4=木曜(周四), 5=金曜(周五), 6=土曜(周六)。
完整查表(源自 6tail/lunar-javascript):
十二地支按星期分 4 组,每组 3 个地支共享同一套映射:
| 地支组 | 周日(0) | 周一(1) | 周二(2) | 周三(3) | 周四(4) | 周五(5) | 周六(6) |
|---|
| 子/辰/申 | 虚 | 毕 | 翼 | 箕 | 奎 | 鬼 | 氐 |
| 丑/巳/酉 | 房 | 尾 | 觜 | 轸 | 斗 | 娄 | 柳 |
| 寅/午/戌 | 星 | 心 | 室 | 参 | 角 | 牛 | 危 |
| 卯/未/亥 | 昴 | 张 | 尾 | 壁 | 井 | 亢 | 女 |
实现步骤:
- 根据公历日期计算日干支(取地支部分)
- 根据公历日期计算星期几
- 查上表得到值日星宿
2.3 计算方法二:儒略日取模法
公式:二十八宿序号 = (23 + A) mod 28
其中:
A = B + C(实际总天数)
B = (年份 - 1) × 365 + 当年已过天数(基本天数)
C = (年份 - 1) ÷ 4 - 误差修正值(闰日天数,整除取整)
误差修正值规则:
| 日期范围 | 修正值 |
|---|
| 公元元年 ~ 1582年10月14日 | 0 |
| 1582年10月15日 ~ 1699年12月31日 | 10 |
| 1700年 ~ 1799年 | 11 |
| 每个世纪 +1(400 整除的世纪除外) | 递增 |
通用修正值公式(1582年10月15日之后):
修正值 = 10 + floor((年份 - 1501) / 100) - floor((年份 - 1201) / 400)
计算示例:1998年3月15日
- B = (1998-1) × 365 + (31+28+15) = 1997 × 365 + 74 = 728,979
- C = floor(1997/4) - 13 + 0 = 499 - 13 = 486
- A = 728,979 + 486 = 729,465
- 序号 = (23 + 729,465) mod 28 = 729,488 mod 28 = 4 → 房宿
序号与星宿对应:
| 序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
|---|
| 星宿 | 角 | 亢 | 氐 | 房 | 心 | 尾 | 箕 | 斗 | 牛 | 女 | 虚 | 危 | 室 | 壁 |
| 序号 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
|---|
| 星宿 | 奎 | 娄 | 胃 | 昴 | 毕 | 觜 | 参 | 井 | 鬼 | 柳 | 星 | 张 | 翼 | 轸 |
2.4 两种方法的关系
- 方法一(地支+星期)是传统历法中记载的方法,实质是一种预计算查表
- 方法二(取模法)是纯数学推导,两者结果一致
- 推荐使用方法一,因为日干支和星期在万年历系统中通常已经计算好
三、本命星宿的确定(宿曜经体系)
3.1 两套体系的区别
| 体系 | 用途 | 依据 | 星宿数量 |
|---|
| 值日星宿(择日) | 判断某天做某事吉凶 | 公历日期 → 日干支 + 星期 | 28 宿 |
| 本命星宿(宿曜经) | 判断个人性格、命运、配对 | 农历出生月日 | 27 宿(去牛宿) |
3.2 宿曜经 27 宿体系
来源:唐代不空三藏翻译的《文殊师利菩萨及诸仙所说吉凶时日善恶宿曜经》(简称《宿曜经》),源自印度占星术。
与 28 宿的差异:宿曜经使用 27 宿,去掉「牛宿」。27 宿序列为:
角、亢、氐、房、心、尾、箕、斗、女、虚、危、室、壁、
奎、娄、胃、昴、毕、觜、参、井、鬼、柳、星、张、翼、轸
3.3 本命星宿计算方法(农历月日查表)
核心公式(源自 6tail/lunar-javascript FotoUtil):
XIU_OFFSET = [11, 13, 15, 17, 19, 21, 24, 0, 2, 4, 7, 9]
正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月
本命星宿 = XIU_27[(XIU_OFFSET[农历月份-1] + 农历日期 - 1) % 27]
其中 XIU_27 数组(27 宿顺序)为:
[角, 亢, 氐, 房, 心, 尾, 箕, 斗, 女, 虚, 危, 室, 壁,
奎, 娄, 胃, 昴, 毕, 觜, 参, 井, 鬼, 柳, 星, 张, 翼, 轸]
计算示例:
- 农历五月初五 → offset=19, 星宿 = XIU_27[(19+5-1) % 27] = XIU_27[23] = 星宿(星日马)
- 农历正月初一 → offset=11, 星宿 = XIU_27[(11+1-1) % 27] = XIU_27[11] = 室宿(室火猪)
- 农历八月十五 → offset=0, 星宿 = XIU_27[(0+15-1) % 27] = XIU_27[14] = 娄宿(娄金狗)
3.4 农历每月初一对应星宿速查
| 农历月 | 初一星宿 | offset |
|---|
| 正月 | 室 | 11 |
| 二月 | 奎 | 13 |
| 三月 | 胃 | 15 |
| 四月 | 毕 | 17 |
| 五月 | 参 | 19 |
| 六月 | 鬼 | 21 |
| 七月 | 星 | 24 |
| 八月 | 角 | 0 |
| 九月 | 氐 | 2 |
| 十月 | 房 | 4 |
| 十一月 | 斗 | 7 |
| 十二月 | 虚 | 9 |
重要提醒:网上很多「农历月日查星宿」的对照表本质就是上述公式的展开。但需注意农历月份是否跨闰月,闰月的处理依具体传承而异。
四、每个星宿的性格特征与值日宜忌
4.1 吉凶歌诀(择日用,二十八宿值日歌)
以下为传统歌诀,每首八句七言,描述该宿值日的吉凶宜忌。吉宿标记为 ★,凶宿标记为 ✗。
东方青龙七宿
★ 角木蛟
角星造作主荣昌,外进田财及女郎,嫁娶婚姻出贵子,文人及第见君王,惟有埋葬不可用,三年之后主瘟疫,起工修筑坟基地,堂前立见主人凶。
✗ 亢金龙
亢星造作长房当,十日之中主有殃,田地消磨官失职,接运定是虎狼伤,嫁娶婚姻用此日,儿孙新妇守空房,埋葬若还用此日,当时害祸主重伤。
✗ 氐土貉
氐星造作主灾凶,费尽田园仓库空,埋葬不可用此日,悬绳吊颈祸重重,若是婚姻离别散,夜招浪子入房中,行船必定遭沉没,更生聋哑子孙穷。
★ 房日兔
房星造作田园进,钱财牛马遍山岗,更招外处田庄宅,荣华富贵福禄康,埋葬若然用此日,高官进职拜君王,嫁娶嫦娥至月殿,三年抱子至朝堂。
- 宜:祭祀、婚嫁、上梁、移徙、埋葬
- 忌:(无特别禁忌)
✗ 心月狐
心星造作大为凶,更遭刑讼狱囚中,忤逆官非宅产退,埋葬卒暴死相从,婚姻若是用此日,子死儿亡泪满胸,三年之内连遭祸,事事教君没始终。
★ 尾火虎
尾星造作主天恩,富贵荣华福禄增,招财进宝兴家宅,和合婚姻贵子孙,埋葬若能依此日,男清女正子孙兴,开门放水招田宅,代代公侯远播名。
★ 箕水豹
箕星造作主高强,岁岁年年大吉昌,埋葬修坟大吉利,田蚕牛马遍山岗,开门放水招田宅,箧满金银谷满仓,福荫高官加禄位,六亲丰禄乐安康。
北方玄武七宿
★ 斗木獬
斗星造作主招财,文武官员位鼎台,田宅家财千万进,坟堂修筑贵富来,开门放水招牛马,旺蚕男女主和谐,遇此吉宿来照护,时支福庆永无灾。
✗ 牛金牛
牛星造作主灾危,九横三灾不可推,家宅不安人口退,田蚕不利主人衰,嫁娶婚姻皆自损,金银财谷渐无之,若是开门并放水,牛猪羊马亦伤悲。
✗ 女土蝠
女星造作损婆娘,兄弟相嫌似虎狼,埋葬生灾逢鬼怪,颠邪疾病主瘟惶,为事遭官财失散,泻利留连不可当,开门放水用此日,全家财散主离乡。
✗ 虚日鼠
虚星造作主灾殃,男女孤眠不一双,内乱风声无礼节,儿孙媳妇伴人床,开门放水遭灾祸,虎咬蛇伤又卒亡,三三五五连年病,家破人亡不可当。
✗ 危月燕
危星不可造高楼,自遭刑吊见血光,三年孩子遭水厄,后生出外永不还,埋葬若还逢此日,周年百日取高堂,三年两载一悲伤,开门放水到官堂。
★ 室火猪
室星修造进田牛,儿孙代代近王侯,家贵荣华天上至,寿如彭祖八千秋,开门放水招财帛,和合婚姻生贵儿,埋葬若能依此日,门庭兴旺福无休。
★ 壁水貐
壁星造作主增财,丝蚕大熟福滔天,奴婢自来人口进,开门放水出英贤,埋葬招财官品进,家中诸事乐陶然,婚姻吉利主贵子,早播名誉著祖鞭。
西方白虎七宿
✗ 奎木狼
奎星造作得祯祥,家内荣和大吉昌,若是埋葬阴卒死,当年定主两三伤,看看军令刑伤到,重重官事主瘟惶,开门放水遭灾祸,三年两次损儿郎。
★ 娄金狗
娄星修造起门庭,财旺家和事事兴,外进钱财百日进,一家兄弟播高名,婚姻进益生贵子,玉帛金银箱满盈,放水开门皆吉利,男荣女贵寿康宁。
★ 胃土雉
胃星造作事如何,家贵荣华喜气多,埋葬贵临官禄位,夫妇齐眉永保康,婚姻遇此家富贵,三灾九祸不逢他,从此门前多吉庆,儿孙代代拜金阶。
✗ 昴日鸡
昴星造作进田牛,埋葬官灾不得休,重丧二日三人死,尽卖田园不记增,开门放水招灾祸,三岁孩儿白了头,婚姻不可逢此日,死别生离是可愁。
★ 毕月乌
毕星造作主光前,买得田园有余钱,埋葬此日添官职,田蚕大熟永丰年,开门放水多吉庆,合家人口得安然,婚姻若得逢此日,生得孩儿福寿全。
✗ 觜火猴
觜星造作有徒刑,三年必定主伶丁,埋葬卒死多因此,取定寅年使杀人,三丧不止皆由此,一人药毒二人身,家门田地皆退败,仓库金银化作尘。
★ 参水猿
参星造作旺人家,文星照耀大光华,只因造作田财旺,埋葬招疾哭黄沙,开门放水加官职,房房子孙见田加,婚姻许遁遭刑克,男女朝开幕落花。
南方朱雀七宿
★ 井木犴
井星造作旺蚕田,金榜题名第一光,埋葬须防惊卒死,狂颠风疾入黄泉,开门放水招财帛,牛马猪羊旺莫言,贵人田塘来入宅,儿孙兴旺有余钱。
✗ 鬼金羊
鬼星起造卒人亡,堂前不见主人郎,埋葬此日官禄至,儿孙代代近君王,开门放水须伤死,嫁娶夫妻不久长,修土筑墙伤产女,手扶双女泪汪汪。
✗ 柳土獐
柳星造作主遭官,昼夜偷闭不暂安,埋葬瘟惶多疾病,田园退尽守冬寒,开门放水遭聋瞎,腰驼背曲似弓弯,更有棒刑宜谨慎,妇人随客走盘桓。
✗ 星日马
星宿日好造新房,进职加官近帝王,不可埋葬并放水,凶星临位女人亡,生离死别无心恋,要自归休别嫁郎,孔子九曲殊难度,放水开门天命伤。
★ 张月鹿
张星日好造龙轩,年年并见进庄田,埋葬不久升官职,代代为官近帝前,开门放水招财帛,婚姻和合福绵绵,田蚕人满仓库满,百般顺意自安然。
✗ 翼火蛇
翼星不利架高堂,三年二载见瘟惶,埋葬若还逢此日,子孙必定走他乡,婚姻此日不宜利,归家定是不相当,开门放水家须破,少女恋花贪外郎。
★ 轸水蚓
轸星临水造龙宫,代代为官受皇封,富贵荣华增寿禄,库满仓盈自昌隆,埋葬文昌来照助,宅舍安宁不见凶,更有为官沾帝宠,婚姻龙子入龙宫。
4.2 四季用宿规则(择日附加)
| 季节 | 宜用 | 忌用 |
|---|
| 春(正、二、三月) | 四木宿(角、斗、奎、井) | 四土宿(氐、女、胃、柳) |
| 夏(四、五、六月) | 四火宿(尾、室、觜、翼) | 四金宿(亢、牛、娄、鬼) |
| 秋(七、八、九月) | 四金宿(亢、牛、娄、鬼) | 四木宿(角、斗、奎、井) |
| 冬(十、十一、十二月) | 四水宿(箕、壁、参、轸) | 四火宿(尾、室、觜、翼) |
五、星宿配对 / 兼容性(宿曜经「三九之法」)
5.1 三九之法概述
宿曜经使用 27 宿体系(去牛宿),通过「三九之法」确定两人之间的关系。
以某人的本命宿为起点,按顺序排列 27 宿,分为三组九位:
第一组(初九):命 → 荣 → 衰 → 安 → 危 → 成 → 坏 → 友 → 亲
第二组(二九):业 → 荣 → 衰 → 安 → 危 → 成 → 坏 → 友 → 亲
第三组(三九):胎 → 荣 → 衰 → 安 → 危 → 成 → 坏 → 友 → 亲
即从命宿开始,每 9 个一组,27 宿正好分完。
5.2 六种关系类型
两人的关系由对方星宿在自己三九圈中的位置决定:
| 关系 | 含义 | 距离区分 | 特征 |
|---|
| 命之星 | 同一星宿 | 无远近 | 极其相似,一个眼神便知对方想法,但吸引力较弱 |
| 业胎 | 业宿/胎宿位置 | 无远近 | 前世因缘深厚;业星对胎星有「还债」关系 |
| 荣亲 | 荣位/亲位 | 分近/中/远 | 前世亲属关系,一见如故,相处融洽 |
| 安坏 | 安位/坏位 | 分近/中/远 | 相爱相杀,有灵魂感但不能长久和谐 |
| 危成 | 危位/成位 | 分近/中/远 | 利益纠葛型,成星助危星,但易因利诱生变 |
| 友衰 | 友位/衰位 | 分近/中/远 | 似朋友战友,势均力敌,忌金钱合作 |
5.3 关系计算方法
设两人的本命星宿在 27 宿序列中的序号分别为 a 和 b(0~26):
距离 = (b - a + 27) % 27
| 距离 | 关系 | 分类 |
|---|
| 0 | 命之星 | — |
| 9 | 业 | 业胎 |
| 18 | 胎 | 业胎 |
| 1 | 近荣 | 荣亲 |
| 8 | 近亲 | 荣亲 |
| 10 | 中荣 | 荣亲 |
| 17 | 中亲 | 荣亲 |
| 19 | 远荣 | 荣亲 |
| 26 | 远亲 | 荣亲 |
| 2 | 近衰 | 友衰 |
| 7 | 近友 | 友衰 |
| 11 | 中衰 | 友衰 |
| 16 | 中友 | 友衰 |
| 20 | 远衰 | 友衰 |
| 25 | 远友 | 友衰 |
| 3 | 近安 | 安坏 |
| 6 | 近坏 | 安坏 |
| 12 | 中安 | 安坏 |
| 15 | 中坏 | 安坏 |
| 21 | 远安 | 安坏 |
| 24 | 远坏 | 安坏 |
| 4 | 近危 | 危成 |
| 5 | 近成 | 危成 |
| 13 | 中危 | 危成 |
| 14 | 中成 | 危成 |
| 22 | 远危 | 危成 |
| 23 | 远成 | 危成 |
规律:三九之法本质上是将 27 分为 3 大组(0-8, 9-17, 18-26),每大组内位置 0 为命/业/胎,1=荣, 2=衰, 3=安, 4=危, 5=成, 6=坏, 7=友, 8=亲。
5.4 婚配宜忌简要
| 关系 | 婚配建议 |
|---|
| 命之星 | 可婚配,但激情不足 |
| 荣亲 | 最佳婚配,天生亲近 |
| 友衰 | 可做朋友,忌金钱合作,婚配需谨慎 |
| 危成 | 一方付出多,长期关系需经营 |
| 安坏 | 最忌婚配,相爱相杀,难以长久 |
| 业胎 | 缘分深但有债务感,需看具体情况 |
六、与其他体系的关联
6.1 二十八星宿与十二地支的对应
十二地支来源于二十八星宿的分区。每方七宿对应三个地支,中间地支对三宿、旁边两个地支各对两宿:
| 方位 | 地支 | 对应星宿 |
|---|
| 东方 | 辰 | 角、亢 |
| 东方 | 卯 | 氐、房、心 |
| 东方 | 寅 | 尾、箕 |
| 北方 | 丑 | 斗、牛 |
| 北方 | 子 | 女、虚、危 |
| 北方 | 亥 | 室、壁 |
| 西方 | 戌 | 奎、娄 |
| 西方 | 酉 | 胃、昴、毕 |
| 西方 | 申 | 觜、参 |
| 南方 | 未 | 井、鬼 |
| 南方 | 午 | 柳、星、张 |
| 南方 | 巳 | 翼、轸 |
6.2 与印度 Nakshatra(27 宿)的异同
| 维度 | 中国二十八宿 | 印度 Nakshatra |
|---|
| 数量 | 28 | 27 |
| 起始点 | 角宿(Spica 附近) | Ashvini(白羊座起点) |
| 坐标 | 赤道坐标系 | 黄道坐标系 |
| 差异宿 | 含「牛宿」 | 无对应(或合并) |
| 划分 | 不等宽(按实际恒星位置) | 等宽(每宿 13°20’) |
| 岁差 | 不校正 | 使用恒星黄道(Sidereal) |
| 关系论 | 宿曜经借鉴印度 27 宿 | 原生体系 |
关键差异:中国 28 宿是天文观测框架(不等宽),宿曜经 27 宿是占星应用(等宽/简化)。两者起源可能相同但独立发展。
6.3 在择日中的应用层次
二十八宿择日通常与以下体系叠加使用:
- 建除十二值星(建、除、满、平、定、执、破、危、成、收、开、闭)
- 十二黄黑道(青龙、明堂、天刑、朱雀、金匮、天德、白虎、玉堂、天牢、玄武、司命、勾陈)
- 干支五行
- 神煞(天德、月德、天恩等吉神 / 岁破、月破等凶煞)
择日综合判断:星宿吉凶只是一个维度,需综合以上体系取交集。
七、可编程性评估
7.1 各部分可编程性
| 模块 | 可编程性 | 实现方式 | 难度 |
|---|
| 值日星宿计算 | 完全可编程 | 日干支地支 + 星期 → 查表 | 低 |
| 本命星宿计算(宿曜经) | 完全可编程 | 农历月日 + offset 查表 | 低(依赖农历转换) |
| 星宿属性查询 | 完全可编程 | 静态映射表 | 极低 |
| 吉凶判断 | 完全可编程 | 查吉凶表 | 极低 |
| 星宿配对(三九之法) | 完全可编程 | 序号差 mod 27 → 关系类型 | 低 |
| 择日综合判断 | 可编程 | 多体系叠加规则 | 中 |
| 性格解读 | 查表 | 文本模板 | 极低 |
| 四季用宿 | 完全可编程 | 月份 → 宜忌宿类映射 | 极低 |
7.2 推荐实现方案
最佳方案:直接使用 6tail/lunar 系列库
| 语言 | 库名 | GitHub |
|---|
| JavaScript | lunar-javascript | github.com/6tail/lunar-javascript |
| Java | lunar-java | github.com/6tail/lunar-java |
| Python | lunar-python | github.com/6tail/lunar-python |
| Go | lunar-go | github.com/6tail/lunar-go |
该库已实现:
getXiu() — 获取值日星宿名
getXiuLuck() — 获取吉凶
getXiuSong() — 获取歌诀
getZheng() — 获取七政(五行+日月)
getAnimal() — 获取动物
getGong() — 获取方位宫
getShou() — 获取四象
自行实现的核心数据结构:
# 二十八宿序列
XIU_28 = ['角','亢','氐','房','心','尾','箕',
'斗','牛','女','虚','危','室','壁',
'奎','娄','胃','昴','毕','觜','参',
'井','鬼','柳','星','张','翼','轸']
# 七政(日月五行)
ZHENG = {'角':'木','亢':'金','氐':'土','房':'日','心':'月','尾':'火','箕':'水',
'斗':'木','牛':'金','女':'土','虚':'日','危':'月','室':'火','壁':'水',
'奎':'木','娄':'金','胃':'土','昴':'日','毕':'月','觜':'火','参':'水',
'井':'木','鬼':'金','柳':'土','星':'日','张':'月','翼':'火','轸':'水'}
# 动物
ANIMAL = {'角':'蛟','亢':'龙','氐':'貉','房':'兔','心':'狐','尾':'虎','箕':'豹',
'斗':'獬','牛':'牛','女':'蝠','虚':'鼠','危':'燕','室':'猪','壁':'貐',
'奎':'狼','娄':'狗','胃':'雉','昴':'鸡','毕':'乌','觜':'猴','参':'猿',
'井':'犴','鬼':'羊','柳':'獐','星':'马','张':'鹿','翼':'蛇','轸':'蚓'}
# 吉凶
LUCK = {'角':'吉','亢':'凶','氐':'凶','房':'吉','心':'凶','尾':'吉','箕':'吉',
'斗':'吉','牛':'凶','女':'凶','虚':'凶','危':'凶','室':'吉','壁':'吉',
'奎':'凶','娄':'吉','胃':'吉','昴':'凶','毕':'吉','觜':'凶','参':'吉',
'井':'吉','鬼':'凶','柳':'凶','星':'凶','张':'吉','翼':'凶','轸':'吉'}
# 方位宫
GONG = {'角':'东','亢':'东','氐':'东','房':'东','心':'东','尾':'东','箕':'东',
'斗':'北','牛':'北','女':'北','虚':'北','危':'北','室':'北','壁':'北',
'奎':'西','娄':'西','胃':'西','昴':'西','毕':'西','觜':'西','参':'西',
'井':'南','鬼':'南','柳':'南','星':'南','张':'南','翼':'南','轸':'南'}
# 四象
SHOU = {'东':'青龙', '南':'朱雀', '西':'白虎', '北':'玄武'}
# 宿曜经27宿(去牛宿)
XIU_27 = ['角','亢','氐','房','心','尾','箕','斗',
'女','虚','危','室','壁','奎','娄','胃',
'昴','毕','觜','参','井','鬼','柳','星','张','翼','轸']
# 本命星宿偏移量(农历正月~十二月)
XIU_OFFSET = [11, 13, 15, 17, 19, 21, 24, 0, 2, 4, 7, 9]
def get_birth_xiu(lunar_month, lunar_day):
"""根据农历月日获取本命星宿(宿曜经27宿体系)"""
idx = (XIU_OFFSET[lunar_month - 1] + lunar_day - 1) % 27
return XIU_27[idx]
def get_relationship(xiu_a, xiu_b):
"""获取两个星宿之间的关系(三九之法)"""
a = XIU_27.index(xiu_a)
b = XIU_27.index(xiu_b)
dist = (b - a + 27) % 27
pos_in_group = dist % 9
group = dist // 9 # 0=命组, 1=业组, 2=胎组
RELATION_NAMES = ['命/业/胎','荣','衰','安','危','成','坏','友','亲']
if pos_in_group == 0:
return ['命之星','业','胎'][group]
prefix = ['近','中','远'][group]
return prefix + RELATION_NAMES[pos_in_group]
# 值日星宿:地支+星期查表
XIU_TABLE = {
# 子辰申组
('子',0):'虚', ('子',1):'毕', ('子',2):'翼', ('子',3):'箕', ('子',4):'奎', ('子',5):'鬼', ('子',6):'氐',
('辰',0):'虚', ('辰',1):'毕', ('辰',2):'翼', ('辰',3):'箕', ('辰',4):'奎', ('辰',5):'鬼', ('辰',6):'氐',
('申',0):'虚', ('申',1):'毕', ('申',2):'翼', ('申',3):'箕', ('申',4):'奎', ('申',5):'鬼', ('申',6):'氐',
# 丑巳酉组
('丑',0):'房', ('丑',1):'尾', ('丑',2):'觜', ('丑',3):'轸', ('丑',4):'斗', ('丑',5):'娄', ('丑',6):'柳',
('巳',0):'房', ('巳',1):'尾', ('巳',2):'觜', ('巳',3):'轸', ('巳',4):'斗', ('巳',5):'娄', ('巳',6):'柳',
('酉',0):'房', ('酉',1):'尾', ('酉',2):'觜', ('酉',3):'轸', ('酉',4):'斗', ('酉',5):'娄', ('酉',6):'柳',
# 寅午戌组
('寅',0):'星', ('寅',1):'心', ('寅',2):'室', ('寅',3):'参', ('寅',4):'角', ('寅',5):'牛', ('寅',6):'危',
('午',0):'星', ('午',1):'心', ('午',2):'室', ('午',3):'参', ('午',4):'角', ('午',5):'牛', ('午',6):'危',
('戌',0):'星', ('戌',1):'心', ('戌',2):'室', ('戌',3):'参', ('戌',4):'角', ('戌',5):'牛', ('戌',6):'危',
# 卯未亥组
('卯',0):'昴', ('卯',1):'张', ('卯',2):'尾', ('卯',3):'壁', ('卯',4):'井', ('卯',5):'亢', ('卯',6):'女',
('未',0):'昴', ('未',1):'张', ('未',2):'尾', ('未',3):'壁', ('未',4):'井', ('未',5):'亢', ('未',6):'女',
('亥',0):'昴', ('亥',1):'张', ('亥',2):'尾', ('亥',3):'壁', ('亥',4):'井', ('亥',5):'亢', ('亥',6):'女',
}
7.3 关键依赖
| 依赖 | 说明 | 推荐方案 |
|---|
| 公历→农历转换 | 本命星宿需要农历月日 | lunar 库已内置 |
| 日干支计算 | 值日星宿需要日地支 | lunar 库已内置;或用儒略日公式 |
| 星期几计算 | 值日星宿查表用 | 标准库即可 |
八、重要注意事项
-
值日星宿 vs 本命星宿是两套不同的体系,不可混淆。值日星宿用于择日,本命星宿用于论命/配对。
-
网上对照表的偏误:很多网站将农历月日直接映射到 28 宿而非 27 宿,这是混淆了值日体系和宿曜经体系。宿曜经论命应使用 27 宿(去牛宿)。
-
闰月处理:宿曜经体系中闰月的处理有争议,不同传承有不同做法。保守做法是闰月归入前一个月。
-
历史一致性验证:从公元 1795 年至 1990 年,共 71,538 天,以 28 宿每天值一宿排列,196 年来传统排列一天也没有错乱,证明值日星宿的周期性是严格的。
-
与七曜的关系:值日星宿查表中的「星期」实际对应古代「七曜」(日月火水木金土),与现代星期一一对应,这并非巧合而是同源。