所谓八字,就是年、月、日、时辰的干支,得到的结果为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());
}
```
- 关于cux-calendar
- 简要介绍
- 快速开始
- 阳历 Solar
- 实例化
- toString
- 获取年、月、日
- 儒略日
- 获取星期
- 判断是否闰年
- 节日
- 星座
- 日期推移
- 阳历日期相减
- 日期比较
- 薪资比例
- 阳历转阴历
- 阳历周 SolarWeek
- 实例化
- toString
- 获取年、月、日
- 一周的起点
- 本月第几周
- 本年第几周
- 本周每一天
- 第一天
- 周的推移
- 阳历月 SolarMonth
- 实例化
- toString
- 获取年、月
- 本月每一天
- 本月每一周
- 月推移
- 阳历季度 SolarSeason
- 实例化
- toString
- 获取年、月
- 本年第几季度
- 本季度每一月
- 季度推移
- 阳历半年 SolarHalfYear
- 实例化
- toString
- 获取年、月
- 本年第几半年
- 本半年每一月
- 半年推移
- 阳历年 SolarYear
- 实例化
- toString
- 获取年
- 本年每一月
- 年推移
- 阳历工具 SolarUtil
- 是否闰年
- 某年天数
- 阳历某月天数
- 某月周数
- 某天位于当年第几天
- 阴历 Lunar
- 实例化
- toString
- 获取年、月、日
- 获取时辰
- 获取星期
- 节日
- 干支
- 禄
- 生肖
- 节气
- 物候
- 数九
- 三伏
- 六曜
- 二十八宿
- 七政(七曜)
- 四宫
- 四神兽
- 彭祖百忌
- 八卦方位
- 吉神方位
- 胎神方位
- 太岁方位
- 冲煞
- 纳音
- 八字
- 旬、旬空(空亡)
- 建除十二值星
- 十二天神
- 每日宜忌
- 时辰宜忌
- 吉神凶煞
- 月相
- 九星
- 日期推移
- 转阳历
- 转佛历
- 转道历
- 阴历月 LunarMonth
- 实例化
- toString
- 获取年、月
- 本月天数
- 是否闰月
- 初一
- 月推移
- 阴历年 LunarYear
- 实例化
- toString
- 获取年
- 获取阴历月
- 获取闰月
- 获取天数
- 获取节气表
- 灶马头
- 三元九运
- 年推移
- 阴历工具 LunarUtil
- 时辰
- 佛历 Foto
- 实例化
- toString
- 获取年、月、日
- 因果犯忌
- 纪念日
- 月斋
- 十斋日
- 六斋日
- 朔望斋
- 观音斋
- 杨公忌
- 二十七星宿
- 转阴历
- 道历 Tao
- 实例化
- toString
- 获取年、月、日
- 节日
- 三会日
- 三元日
- 八节日
- 五腊日
- 八会日
- 戊日
- 天赦日
- 转阴历
- 法定假日 HolidayUtil
- 法定假日
- 数据修正及补充
- 指定日期是否放假或调休
- 指定月份的假期
- 指定年份的假期
- 节日相关的假期
