生肖指阴历还是阳历?
十二生肖的“十二”不是指“农历12个月”,而是指“一年中有十二个变化”的意思(古人把每十二个月称为一个轮回)。 子鼠、丑牛、寅虎、卯兔……按地支理论,应该是每三个月换一个属相。然而实际情况并不是这样——例如春节是农历一月一日,然而在公历三月之前还只立春,农历腊月则是大寒。这时属什么?当然还属鼠年!这显然是不合道理的。古代的干支纪年法就存在一个难以自圆其说的矛盾:每年正月是什么属相?十二月又是什么属相?为了这个“每月属相”问题,古人想了不少办法。其中一个办法就是:用“阴阳五行”来解释。
首先,他们把“十天干”与“十二地支”相配,组成了甲午、乙巳等60组叫作“甲子周期”的记忆单位;然后他们发现,每组60年一个循环后,第一组的第一个字总是“甲”或“丙”。于是古人就想到了“推衍”的办法:如果第一年属“甲乙木”,那第三年就是“丙丁火”,第四年就是“戊己土”,这样一来,每年属什么属相不就自然解决了吗? 实际上这种按照“天干地支”组合计算的推衍算法是一种“伪数学”,它的规则里并不包含“农历”或者“公历”,所以它算出来的结果既不体现“立春换年”也不体现“冬至换年”——因为无论什么时候换年,第一组的第一个字的符号永远是“丙”而非其他。这就是古人把子鼠排第一而不是亥猪的原因所在——“子丑寅卯”里的“子”永远优先于“丑”。
事实上,当第一组的“丙”字出现时,年节已经过去了,属象已经换了,只不过这种算法忽略了这个问题而已。如果细究起来,这种算法只能算一种记忆单位,并不能实际应用。然而古代没有真正意义上的数学,因此这种计算方式一直无人察觉有问题。直到明朝末年,大数学家梅文鼎先生看到这种方法在月令上的运用总是出错,才发现了其中漏洞。可惜此时古人已经习惯了这种记忆方法,再也无法纠正过来了,于是这种“错得离谱”的算法就成了“真数学”了!