近现代农历的规则:
(1)太阳黄经为0、15、30、45、60、....、330、345度时,分别应对春分、清明、....、雨水、惊蛰24节气的发生时刻。具体编排日历时,春分指春分发生时刻所在的日期,其它节气也如此。中气指24节气中太阳阳黄经为0、30、60、90...330的那几个日子。
(2)日月合朔时刻所在的日期为新月份初一,而不是上月的最后一天。在《紫金历》中,日期使用北京时间(在古代,并不一定使用北京时间)。值得注意的是,在《紫金历》中,日月合朔那一天正好是节气或中气,那么该气属本月的初一,不是上月的最后一天。
(3)农历年首始于冬至所在的朔望月(即具有明确天文学意义的年首),这就是说农历一年只能包含一个冬至。
(4)如果一年内含有13个朔望月,则该年是农历闰年。而农历中的月名称只有12个,怎么办?只好拿掉一个月,并称之为“闰某月”,这个“某”字与上个月同名。要拿掉哪个月呢?《紫金历》中要拿掉本年第一个不含中气的月。
(5)节日上用的农历新年始于正月(建寅),即皇家公布的民用年首。从冬至所在月开始月计数(闰月不算),第3个月为年首。详见“第一章 关于寿星万年历”
公历与近现代农历的比较:
公历是“人历”。在公历中,“日”的定义具有严格的天文学意义,而“年”和“月”的具体长度则是人为规则定的。公历的平均年长度取值365.2425天,真实平均回归年长度为365.2422天,二者非常接近。从某种意义上说,公历是一种特殊的日期记数器,而不是严格的太阳历。随着时间的推移,公历与太阳位置的对应关系将发生越来越大的偏差,到时人们将跟据情况改历。
中国农历本质上是“天历”。根据现代农历的规则,农历的太阳年长度是根据太阳运动实时调整的,无需人为定期调整。所以农历的推算需要日月星历表。
几个农历中特殊现象的说明:
(1)太阳经过近地点时(冬天),太阳黄经运动速增加3%,那么在一个月中,月亮要“赶上”太阳所要花费的时间会增加,这时候平均朔望月会长一些,通常会大于29.5天,包含中气的可能性会增加,一般不会置闰。反之,太阳经过远地点时(夏天),太阳黄经运动速减加3%(与近地点相差6%),则被置为闰月的可能性增加。太阳黄经速度的大致表达:v = 6.28332 +0.21 *sin(1.527+6.28307585*t),单位是弧度/年, 式中t是相对于2000年首的儒略年数(365.25000天/儒略年)
(2)当日月合朔时刻或者节气交接时刻发生在北京时0点附近10秒钟以内,这时候对日月合朔(或节气)的发生日期的判断将发生困难,因为这时要求历算的精度很高。现代算法推算未来1年的农历完全可以精确到3秒以内,所以我们不必太担心这个问题。在过去,历算精度不很高,遇至这种情况就很难判断日月合朔发生的准确日期,造成过去计算的“初一”与现在计算的“初一”相差一天是完全正常的。对于今人,则应尊重过去历算的结果,不能随意更改历日。再者,当时使用的时间系统与现在也不完全相同。比如,现代人使用的是UTC时间,中国使用北京时间(东8区),而以前可能使用天文台的平太阳时或其它时间系统,与今人不完全相同,因此可能造成日期计算的结果不完全相同,我们不能因此说过去历算有误。比如,我曾看过一篇文章,20世纪初,我国曾使用东经116度的平太阳时。同样,中气发生日期的判断也存在这个问题。由于历算精度不断提高,这个问题基本上得到解决了。
(3)“一个月包含两个中气”并不违反以上5条农历规则。
(4)“在只有12个月的年份中,遇到无中气的月份,不对这个月置闰”,这也不违反以上5条农历规则。
(5)中气与合朔日发生在同一天,是用“发生时刻的先后顺序确定某月是否包中气”还是用“日期来确定包含关系”。从原理上说,这两种方法都是可行的,不过,传统上为了降低历算的精度要求,采用后者来判断一个月中是否包含中气,紫金历也是如此。
(6)冬至所在的农历月被规则定年首,必然包含“冬至”这个中气,所以不可能是闰月。
干支纪法:
“干支”的字面意义就是树干和枝叶。我国古代以天为主,以地为从,天和干相加叫天干,地和支相连叫地支,合起来叫天干地支,简称干支。
天干有十个(天干表,0——9): 甲乙丙丁戊己庚辛壬癸
地支有12个(地支表,0——11):子丑寅卯辰巳午未申酉戌亥
通常干支是搭配成一对使用的,即:0甲子、1乙丑...9癸酉、10甲戌、11乙亥、12丙子...59癸亥,共60个。我国古代用这60个干支来表示年、月、日、时的序列号,周而复始,不断循环,这就是干去纪法。在任一时刻,年、月、日、时的干去合起来有八个字,谷称“八字”。
干支纪法的每60次一个循环,循环周期很小,因此用干支纪年表达几千年的历史,问题多多,是一种落后的纪法。不过在命理学及古代历史研究中会大量遇到干支问题,所以有必要在此讲述一些干支的具体计算问题。
干支纪年:
已知1984年为甲子年,求2000年的干支纪年。解:从1984年起算,到了2000经过了16年,那么天干 = 16%10 = 6,即天干表中的序号为6的“庚”,地支 = 16%12 = 4,即地支表中序号为4的“辰”。这样,干支纪年为“庚辰年”
以上计算是不严格的,因为我们在计算年数差的时候使用了“公历”的纪年,一个是“天历”,一个是“人历”,二者的纪年关系不是严格一一对应的(最近几百年对应的很好)。实际计算时最好使用儒略日数来计算,每年的天数用365.2422天,如此反算出年数差就可靠得多。
算命学通常以立春为界定纪年,即立春以前为前一年,立春开始为新年。中国中央电视台以春节为界定纪年,即大年初一开始为新年。
干支纪月:
干支纪月的分界点是12节气(除中气外的24节气,如立春、立秋等),这样一年共有12个月,所以这里的月是阳历性质的,与月历无关。已知1998年12月7(大雪)甲子月,其余按顺序类推。实际计算时,我们可以先算出当前月分相对于1998年12月大雪和积累月数N,那么天干 = N%10,地支 = N%12。