AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
所谓八字,就是年、月、日、时辰的干支,得到的结果为8个字。 ~~~ 注意:八字的年干支,必须以立春节气交接的时刻来准确划分;月干支也必须以当月节交接的时刻来准确划分。 ~~~ 时辰天干,以日的天干和时辰的地支按下表规则进行计算而得,但是需要注意的是子时跨天。有人说23:00-23:59为晚子时日柱应算作明天,而00:00-00:59为早子时,算作当天,也有人说日柱都按当天算,只是晚子时时柱按明天算。 | | 日干 | | | | | |----|----|----|----|----|----| | 时支 | 甲/己 | 乙/庚 | 丙/辛 | 丁/壬 | 戊/癸 | | 子 | 甲子 | 丙子 | 戊子 | 庚子 | 壬子 | | 丑 | 乙丑 | 丁丑 | 己丑 | 辛丑 | 癸丑 | | 寅 | 丙寅 | 戊寅 | 庚寅 | 壬寅 | 甲寅 | | 卯 | 丁卯 | 己卯 | 辛卯 | 癸卯 | 乙卯 | | 辰 | 戊辰 | 庚辰 | 壬辰 | 甲辰 | 丙辰 | | 巳 | 己巳 | 辛巳 | 癸巳 | 乙巳 | 丁巳 | | 午 | 庚午 | 壬午 | 甲午 | 丙午 | 戊午 | | 未 | 辛未 | 癸未 | 乙未 | 丁未 | 己未 | | 申 | 壬申 | 甲申 | 丙申 | 戊申 | 庚申 | | 酉 | 癸酉 | 乙酉 | 丁酉 | 己酉 | 辛酉 | | 戌 | 甲戌 | 丙戌 | 戊戌 | 庚戌 | 壬戌 | | 亥 | 乙亥 | 丁亥 | 己亥 | 辛亥 | 癸亥 | 四柱:“年柱”、“月柱”、“日柱”、“时柱”,由“年干,年支”、“月干,月支”、“日干,日支”、“时干,时支”,共八个干支所组成,每一个组合称为“柱”,故八字又称为“四柱”或“四柱八字”。 五行,包括木火土金水。 由于天干和地支对应五行,所以我们可以根据八字得出五行,也就知道了缺什么,给小孩取名时,往往根据五行缺什么来补充。 五行天干地支木甲、乙寅、卯火丙、丁巳、午土戊、己辰、丑、戌、未金庚、辛申、酉水壬、癸亥、子 一个男性的生辰八字也称为“乾造”,意思是男命。《周易》中乾为男。“造”:造化。整体即:(一个)男人的造化。 同理女性的生辰八字也称为“坤造”。 ### 地势 八字中地势,也称长生十二神,包括: ~~~ 长生、沐浴、冠带、临官、帝旺、衰、病、死、墓、绝、胎、养 ~~~ 长生十二神的排法参考下表: || 五阳干 | | | 五阴干 | | | | | |----|----|----|----|----|----|----|----|----| || 甲 | 丙戊 | 庚 | 壬 | 乙 | 丁己 | 辛 | 癸 | | 长生 | 亥 | 寅 | 巳 | 申 | 午 | 酉 | 子 | 卯 | | 沐浴 | 子 | 卯 | 午 | 酉 | 巳 | 申 | 亥 | 寅 | | 冠带 | 丑 | 辰 | 未 | 戌 | 辰 | 未 | 戌 | 丑 | | 临官 | 寅 | 巳 | 申 | 亥 | 卯 | 午 | 酉 | 子 | | 帝旺 | 卯 | 午 | 酉 | 子 | 寅 | 巳 | 申 | 亥 | | 衰 | 辰 | 未 | 戌 | 丑 | 丑 | 辰 | 未 | 戌 | | 病 | 巳 | 申 | 亥 | 寅 | 子 | 卯 | 午 | 酉 | | 死 | 午 | 酉 | 子 | 卯 | 亥 | 寅 | 巳 | 申 | | 墓 | 未 | 戌 | 丑 | 辰 | 戌 | 丑 | 辰 | 未 | | 绝 | 申 | 亥 | 寅 | 巳 | 酉 | 子 | 卯 | 午 | | 胎 | 酉 | 子 | 卯 | 午 | 申 | 亥 | 寅 | 巳 | | 养 | 戌 | 丑 | 辰 | 未 | 未 | 戌 | 丑 | 辰 | 固定用日干与四柱地支进行查表可得到长生十二神;也可以根据长生对应的地支对沐浴、冠带等进行推算,阳干对应的地支顺推,阴干逆推。 ### 调用方法 由于八字涉及的信息较多,Lunar已经越来越臃肿,故将八字单独提出,所有八字相关内容请使用EightChar。 1. .getEightChar() > 获取八字对象EightChar ### 流派 为了兼容日柱的不同划分方式,这里八字分为2种流派,其中流派1认为晚子时日柱算明天,流派2认为晚子时日柱算当天,两种流派都认为晚子时时柱算明天。当不设置流派时,默认采用流派2。使用EightChar的下属方法可获知或切换流派: 1. .getSect() > 获取流派,数字1或2 2. .setSect(sect) > 设置流派,`sect(数字)`为流派,1代表流派1,2代表流派2。调用该方法切换流派后,重新获取与日柱相关的信息将按新的方案计算。 ### 年柱 八字中的年柱以立春交接时刻为准,请使用EightChar的下属方法获得八字年柱相关信息: 1. .getYear() > 获取年柱,如辛亥 2. .getYearGan() > 获取年柱天干,如辛 3. .getYearHideGan() > 获取年柱地支藏干,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 4. .getYearZhi() > 获取年柱地支,如亥 5. .getYearWuXing() > 获取年柱五行,如金木 6. .getYearNaYin() > 获取年柱[纳音](https://www.kancloud.cn/onep2p/cux-calendar/3213974),如杨柳木 7. .getYearShiShenGan() > 获取年柱天干十神 8. .getYearShiShenZhi() > 获取年柱地支十神,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 9. .getYearDiShi() > 获取年柱地势(长生十二神) 10. .getYearXun() > 获取年柱所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992) 11. .getYearXunKong() > 获取年柱[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992) ### 月柱 八字中的年柱以节交接时刻为准,请使用EightChar的下属方法获得八字月柱相关信息: 1. .getMonth() > 获取月柱,如辛亥 2. .getMonthGan() > 获取月柱天干,如辛 3. .getMonthHideGan() > 获取月柱地支藏干,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 4. .getMonthZhi() > 获取月柱地支,如亥 5. .getMonthWuXing() > 获取月柱五行,如金木 6. .getMonthNaYin() > 获取月柱[纳音](https://www.kancloud.cn/onep2p/cux-calendar/3213974),如杨柳木 7. .getMonthShiShenGan() > 获取月柱天干十神 8. .getMonthShiShenZhi() > 获取月柱地支十神,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 9. .getMonthDiShi() > 获取月柱地势(长生十二神) 10. .getMonthXun() > 获取月柱所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992) 11. .getMonthXunKong() > 获取月柱[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992) ### 日柱 八字中的日柱区分早晚子时,请注意流派,使用EightChar的下属方法获得八字日柱相关信息: 1. .getDay() > 获取日柱,如辛亥 2. .getDayGan() > 获取日柱天干,如辛 3. .getDayHideGan() > 获取日柱地支藏干,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 4. .getDayZhi() > 获取日柱地支,如亥 5. .getDayWuXing() > 获取日柱五行,如金木 6. .getDayNaYin() > 获取日柱[纳音](https://www.kancloud.cn/onep2p/cux-calendar/3213974),如杨柳木 7. .getDayShiShenGan() > 获取日柱天干十神,日柱天干十神固定为:日主,也称日元、日干 8. .getDayShiShenZhi() > 获取日柱地支十神,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 9. .getDayDiShi() > 获取日柱地势(长生十二神) 10. .getDayXun() > 获取日柱所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992) 11. .getDayXunKong() > 获取日柱[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992) ### 时柱 请使用EightChar的下属方法获得八字时柱相关信息: 1. .getTime() > 获取时柱,如辛亥 2. .getTimeGan() > 获取时柱天干,如辛 3. .getTimeHideGan() > 获取时柱地支藏干,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 4. .getTimeZhi() > 获取时柱地支,如亥 5. .getTimeWuXing() > 获取时柱五行,如金木 6. .getTimeNaYin() > 获取时柱[纳音](https://www.kancloud.cn/onep2p/cux-calendar/3213974),如杨柳木 7. .getTimeShiShenGan() > 获取时柱天干十神 8. .getTimeShiShenZhi() > 获取时柱地支十神,由于藏干分本气、中气、余气,所以返回结果可能为1到3个元素 9. .getTimeDiShi() > 获取时柱地势(长生十二神) 10. .getTimeXun() > 获取时柱所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992) 11. .getTimeXunKong() > 获取时柱[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992) ### 胎元、命宫、身宫 1. .getTaiYuan() > 获取胎元 2. .getMingGong() > 获取命宫 3. .getShenGong() > 获取身宫 ### 起运 起运算法流派很多,各流派之间计算会存在误差,目前支持2个流派: 流派1:阳年(年干为甲、丙、戊、庚、壬为阳)生男、阴年(年干为乙、丁、己、辛、癸为阴)生女从出生时辰开始往后推至下一个节令时辰,阴年(年干为乙、丁、己、辛、癸为阴)生男、阳年(年干为甲、丙、戊、庚、壬为阳)生女从出生时辰开始往前倒推至上一个节令时辰,计算经历的天数和时辰数,按3天为1年,1天为4个月,1个时辰为10天进行换算,得到出生几年几个月几天后起运。 流派2:阳年(年干为甲、丙、戊、庚、壬为阳)生男、阴年(年干为乙、丁、己、辛、癸为阴)生女从出生时辰开始往后推至下一个节令时辰,阴年(年干为乙、丁、己、辛、癸为阴)生男、阳年(年干为甲、丙、戊、庚、壬为阳)生女从出生时辰开始往前倒推至上一个节令时辰,计算经历的分钟数,按4320分钟为1年,360分钟为1个月,12分钟为1天,1分钟为2小时进行换算,得到出生几年几个月几天几小时后起运。 要得到起运数,需要先获取运: 1. .getYun(gender, sect) > 获取运。`gender(数字)`为性别,1为男,0为女。`sect(数字)`为流派,1为流派1,2为流派2,不传则默认使用流派1。 然后通过运的方法,获取起运相关信息: 1. .getStartYear() > 获取起运年数。 2. .getStartMonth() > 获取起运月数。 3. .getStartDay() > 获取起运天数。 4. .getStartHour() > 获取起运小时数。流派1目前不支持小时,返回0。流派2可支持到小时。 5. .getStartSolar() > 获取起运的阳历日期。返回`Solar`对象。 ### 大运 以月柱为基准,从起运年开始,每隔10年排1大运,即按阳男阴女顺排、阴男阳女逆排的规则,和60甲子顺序依次排布干支,一般排9轮。 大运也是先获取运,再调用运的方法得到大运表: 1. .getDaYun() > 获取大运排布表。返回一个数组,第1个元素为出生年份,第2个元素为起大运年份,后续均间隔10年,共10个元素。 大运表中每个元素,均包含一些细节信息: 1. .getStartYear() > 获取大运起始年(包含)。 2. .getEndYear() > 获取大运结束年(包含)。 3. .getStartAge() > 获取大运起始年龄(即岁数,包含)。 4. .getEndAge() > 获取大运结束年龄(即岁数,包含)。 5. .getIndex() > 获取第几轮大运(数字,0-9,0为出生年份,1为起大运)。 6. .getGanZhi() > 获取干支。 7. .getLiuNian() > 获取流年表(数组)。 8. .getXiaoYun() > 获取小运表(数组)。 9. .getXun() > 获取所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 10. .getXunKong() > 获取[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 ### 流年 流年实际上就是从出生年开始,按60甲子顺序依次排布每一年的干支,按大运的起始年和结束年分别划分到对应大运区间中。也即每一年的干支排布。 流年表需要从大运信息中获取,流年包含的细节信息如下: 1. .getYear() > 获取年份。 2. .getAge() > 获取年龄。 3. .getIndex() > 获取位于当前大运中的序号(数字,0-9)。 4. .getGanZhi() > 获取干支。 5. .getLiuYue() > 获取流月表(数组)。 6. .getXun() > 获取所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 7. .getXunKong() > 获取[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 ### 小运 以时柱为基准,按阳男阴女顺排、阴男阳女逆排的规则,和60甲子顺序依次排布干支,按大运的起始年和结束年分别划分到对应大运区间中的每一年。 小运表需要从大运信息中获取,小运包含的细节信息如下: 1. .getYear() > 获取年份。 2. .getAge() > 获取年龄。 3. .getIndex() > 获取位于当前大运中的序号(数字,0-9)。 4. .getGanZhi() > 获取干支。 5. .getXun() > 获取所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 6. .getXunKong() > 获取[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 ### 流月 流月指流年中每一月的干支排布。 流月表需要从流年信息中获取,小运包含的细节信息如下: 1. .getMonthInChinese() > 获取中文月份。 2. .getIndex() > 获取月序号(数字,0-11)。 3. .getGanZhi() > 获取干支。 4. .getXun() > 获取所在[旬](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 5. .getXunKong() > 获取[旬空(空亡)](https://www.kancloud.cn/onep2p/cux-calendar/3213992)。 注:如果需要通过八字反推阳历,请参考[阳历实例化](https://www.kancloud.cn/onep2p/cux-calendar/3213893) ### 示例代码 ``` // 今日八字 const lunar = Lunar.fromDate(new Date()); const d = lunar.getEightChar(); console.log(d.getYearWuXing() + ', ' + d.getMonthWuXing() + ', ' + d.getDayWuXing() + ', ' + d.getTimeWuXing()); console.log(d.getYearNaYin() + ', ' + d.getMonthNaYin() + ', ' + d.getDayNaYin() + ', ' + d.getTimeNaYin()); console.log(d.getYearShiShenGan() + ', ' + d.getMonthShiShenGan() + ', ' + d.getDayShiShenGan() + ', ' + d.getTimeShiShenGan()); // 年支十神 console.log('年支十神 = ' + d.getYearShiShenZhi()); // 月支十神 console.log('月支十神 = ' + d.getMonthShiShenZhi()); // 日支十神 console.log('日支十神 = ' + d.getDayShiShenZhi()); // 时支十神 console.log('时支十神 = ' + d.getTimeShiShenZhi()); // 获取男运 const yun = d.getYun(1); // 起运 console.log('出生' + yun.getStartYear() + '年' + yun.getStartMonth() + '个月' + yun.getStartDay() + '天后起运'); // 获取大运表 const daYunArr = yun.getDaYun(); for (let i=0, j=daYunArr.length; i<j; i++) { let daYun = daYunArr[i]; console.log('大运[' + i + '] = ' + daYun.getStartYear() + '年 ' + daYun.getStartAge() + '岁 ' + daYun.getGanZhi()); } // 第1次大运流年 const LiuNianArr = daYunArr[1].getLiuNian(); for (let i=0, j=LiuNianArr.length; i<j; i++) { let liuNian = LiuNianArr[i]; console.log('流年[' + i + '] = ' + liuNian.getYear() + '年 ' + liuNian.getAge() + '岁 ' + liuNian.getGanZhi()); } ```