公元表示什么生肖?
这个问题我十年前想了很久,但一直没有弄清楚,所以现在重写解答这个题。 首先,我们要知道,公历和农历是两种不同的历法系统,农历以朔望月为周期,一个月有二十九天或三十天,一年共有十二个月;而公历以地球公转为基础,一年一共有三百六十五天,而为了增加每年的长度与月球的公转周期接近,每四年增加一天作为闰日,平均下来,四年就有将近两天的时间差。这样公历就可以精确地标识一年中的每一天了。 但问题是,我们的祖先在计算中发现了,如果按公历的规则一直下去,某年某一天有可能重复出现(比如今天是2016年5月8日,再过四年就是2020年5月8日),为了避免这种现象发生,他们想出了一个巧妙的办法——每年固定设置一个“节”,把“节”前的日子单数加一,双数的日子不变,这样就保证了公历日期的一贯性。
至于这“节”在哪里,我们不妨看看中华民国国民政府制定的《国历施行细则》: “正月”、“十二月”各31天,“二月”、“十一月”各30天,“三月”、“十月”各31天,“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十一月”各30天;“腊月”29天。 农历的月份是根据月亮圆缺变化的规律确定的,而公历的“节”则是由国民政府的决议确定的。
既然“节”是人为规定的,我们就得考虑遇到“节”的时候,阳历阴历应该怎么办!如果“节”恰好落在农历的月末或月初,事情就简单了,只需要将下一月份的月初定为“节”就可以了;但如果“节”落在农历的中旬呢?就得复杂一些了。我们的祖先采用了“折半处理”的方法,即认为“节”从新月开始,把前后各半个月划归下个月,这种处理方法实际上是把阴历和公历均分成了两份,所以这种方法又称为“置闰月”或者是“闰月”。 那么为什么不是三个月一闰而是两个月一闰呢?因为按照《国历施行细则》的规定,每一年的闰月都是根据二十四节气中的“雨水”或者“春分”确定。我们知道,立春标志着春季的开始,而雨水则是春季的第二个月开始,也就是说,只要有雨水节气,之后的月份肯定是闰月,如此才能保证农历正月初一是公历的元旦。
而如果月份不划分到节气里,则每个月都可能有“雨”或者“水”,这样就会出现每月都不对应公历1号的现象,这是祖先们不愿意看到的。 所以大家知道了农历是月相历,而公历是太阳历,两者之间的差异,通过“置闰月”可以大致抵消,不过这样却带来了另一个问题——阴阳历年差的问题。
以上都只是介绍了阴历和公历的关系,但实际上我国古代使用的历法还包括二十四节气,这就让情况变得更复杂了。 二十四节气的确立是按照地球在公转轨道上的位置变化划分的,每个节气分别相应于地球在公转轨道上的不同位置,把太阳周年运动轨迹划分为24等份,每15°为一等份,每一等份为一个节气,始于立春,终于大寒,周而复始。由于二十四节气几乎完全反映了太阳周年运动,因此利用它来估算农历日期几乎是准确的。 但是当我们加入阴历的因素之后,情况就变得比较糟糕了。由于阴历每个月初一开始的时间不定,有时候是“节”的前一天,有时候又是“节”当天,更麻烦的是,一年可能没有“节”,这时候时间就更没谱了。
为了找出农历日期和公历日期的规律,让我们重新回顾下公历和阴历关系的数学模型: y=(mod(m-1,4)+1)\times d+k 我们来具体分析一下这个公式里的各个符号的意义: m 是整数,代表年份,即公元纪年; d 为天数; k 为星期数; mod ( ) 表示模运算,其运算结果仍然是整数; \times 和+分别是乘法和加法。 现在我们添加新的变量x,代表阴历的月份,则上述公式可以变换成如下形式: x=(mod(m-1,44)+1)\times d+(w-1)+k w=(d+1)\div 7 最后,当我们给定一组公历的年月日和一个阴历的月份后,就可以通过上面的公式算出相应的农历日期了。