一般来说,人们把以地球围绕太阳公转周期为基础的历法称为阳历,把以月相周期为基础的历法称为阴历。而中国古代的历法,是参考了包括太阳、月亮、北斗七星、木星在内的各种天体的周期变化所形成的历法,因此可以称为阴阳合历。
古代习惯以十进制计数,以十日为一旬,用“甲、乙、丙、丁、戊、己、庚、辛、壬、癸”进行编号排序,这十个符号后世称为天干。
月相变化的一个周期将近三十天,十二个月近似于一个太阳回归年的长度。此外,木星的周期也近似十二年(实际上只有11.86年)。“十二”这个整数逐步抽象出来,以“子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥”排序,这十二个符号,后世称为地支。
以天干配地支标记日期,是为干支纪日。中国人自从使用甲骨文开始,就在使用干支纪日。殷墟曾经发现完整的六十干支表。战国古籍《世本》说:“大桡作甲子。”大桡是谁?《吕氏春秋》上说大桡是黄帝的老师,但黄帝在历史上是怎么样的情况?可惜我们没有任何第一手资料来描述他的事迹。
▲甲骨干支表摹本
我们只知道,商朝的先公先王先妣都有自己的日名,就是美称加天干组成,后代一般在祖先日名对应的干支日期举行相应的祭祀活动。先秦文献记载中,夏朝末期几个夏王的称号里也带有天干,因此可以认为商朝甲骨文所用的干支纪日应该有更古老的起源。
古人在长期观测天相的时候发现,北斗七星绕着北极星旋转,基本上与太阳年的周期相同。于是,古人根据北斗旋转的方向将地面分成十二个方位,再配以十二支作为序列:正北为子,东北为丑寅,正东为卯,东南为辰巳,正南为午,西南为未申,正西为酉,西北为戌、亥。再从地面延伸到天区,沿黄道带也可以等分出十二个区域,沿用十二支作为序列名。斗柄指向某个区域的月份,就以该区域的序列名相称。因此,十二月皆有地支与之匹配。
使用哪个月当作一年的起点,生活在不同地区的人们直观感受不同。先秦时代的各国在建立政权后,往往就是根据实际情况,再结合斗柄指向的位置来选择岁首,是为“建正”,岁首确定后再类推导出四季的粗略划分范围,是为“斗柄授时”。
《史记·历书》上说:“夏正以正月,殷正以十二月,周正以十一月”,换一种讲法,就是“夏历建寅,殷历建丑,周历建子”。
后人根据《春秋》、《孟子》等书分析,周历基本满足建子的规则,但殷历和夏历是不是完全满足建丑建寅的规则,就不太好说了。不过,由于后人认为建寅是夏历的特征,颛顼历中也糅合了夏历,那么夏历可能也是曾经存在过的历法,只是我们不能完全知晓它的历史本质而已。
东周列国时代,诸侯们开始培养自己的历法团队,自行建正。其中鲁国掌管历法的人水平低于当时的正常水平,经常出现历法计算失误,导致“超闰”或“失闰”,使得建正很难固定。鲁僖公五年(前656年)之前多为建丑之正,但是之后则多为建子之正。
如此看来,三代时期也未必是固定的“建正”,只不过是古代历法家为了渲染建正与王朝正统之间的神秘联系,图个整齐划一而已。
战国时代的历法考古资料发现较多的是楚历和秦历,而且两个历法岁首都离立春很远。楚历建亥,也就是以亥月为岁首。另外,楚人给部分月份起了奇怪的名字,分别是:冬夕(正月)、屈夕(二月)、援夕(三月)、荆夷(四月)、夏夷(五月)、纺月(六月)、夏夕(七月)、八月、九月、十月、爨月(十一月)、献马(十二月)。
秦国据说用的是颛顼历,这种历法是“亥首寅正”,以寅月为正月排列月序,以亥月为岁首,由于寅正序列下的亥月为十月,所以十月就是岁首。也就是说,楚国与秦国的岁首都是同一个月,只是月名不一样。
▲鄂君启节,开头采用以事纪年
秦朝这种以夏历十月为岁首的历法一直沿用到了汉朝。汉武帝元封七年改元为太初元年,颁行《太初历》,将夏历正月扳回岁首的位置。这样一来,元封七年加太初元年一共十五个月,岁首到这个时候才重新落入靠近立春的月份。
本文经指文烽火工作室授权发布,作者原廓。任何媒体或者公众号未经书面授权不得转载