北斗建正
古人长期观测天相后发现,北斗七星绕着北极星旋转,基本上与太阳年的周期相同。于是,古人根据北斗旋转的方向将地面分成十二个方位,配以十二支作为序列:正北为子,东北为丑寅,正东为卯,东南为辰巳,正南为午,西南为未申,正西为酉,西北为戌、亥。再从地面延伸到天区,沿黄道带也等分出十二个区域,沿用十二支作为序列名。斗柄指向某个区域的月份,就以该区域的序列名相称。因此,十二月皆有地支与之匹配。
使用哪个月当作一年的起点,生活在不同地区的人们直观感受不同。先秦时代的各国在建立政权后,往往就是根据实际情况,再结合斗柄指向的位置来选择岁首,是为“建正”,岁首确定后再类推导出四季的粗略划分范围,是为“斗柄授时”。
《史记·历书》上说:“夏正以正月,殷正以十二月,周正以十一月。”意思是,夏代以正月、商代以十二月、周代以十一月为一年的岁首。换一种讲法,就是“夏历建寅、殷历建丑、周历建子”。
后人根据《春秋》《孟子》等书分析,周历基本满足建子的规则,但夏历和殷历是不是完全满足建寅、建丑的规则,就不太好说了。不过,由于后人认为建寅是夏历的特征,颛顼历中也糅合了夏历,那么夏历极可能曾存在过,只是我们不能完全知晓它的历史本质而已。
东周列国时期,诸侯们开始培养自己的历法团队,自行建正。其中,鲁国掌管历法的人水平低于当时的正常水平,历法经常计算失误,导致“超闰”或“失闰”,使得建正很难固定。鲁僖公五年(公元前656年)前多为建丑之正,之后则多为建子之正。
如此看来,三代时期,建正也未必是固定的,只不过古代历法家为了渲染建正与王朝正统之间的神秘联系,图个整齐划一而已。
有关战国时代的历法考古资料,最多的是楚历和秦历,而且两个历法岁首都离立春很远。楚历建亥,也就是以亥月为岁首。另外,楚人给部分月份起了奇怪的名字,分别是:冬夕(正月)、屈夕(二月)、援夕(三月)、荆夷(四月)、夏夷(五月)、纺月(六月)、夏夕(七月)、八月、九月、十月、爨月(十一月)、献马(十二月)。
秦国据说用的是颛顼历,这种历法是“亥首寅正”,以寅月为正月排列月序,以亥月为岁首,由于寅正序列下的亥月为十月,所以十月就是岁首。也就是说,楚国与秦国的岁首都是同一个月,只是月名不一样。
秦朝这种以夏历十月为岁首的历法一直沿用到了汉朝。汉武帝元封七年改元为太初元年,颁行《太初历》,将夏历正月扳回岁首的位置。这样一来,元封七年加太初元年一共十五个月,岁首到这个时候才重新落入靠近立春的月份。