zoukankan      html  css  js  c++  java
  • 转载:公历,农历相关的历法知识

    原文作者:阮一峰

    点击查看原文

    正文


    新春期间,我忍不住又想到了一个老问题:

    为什么每年春节的日期都不一样?

    从2007年到2010年,春节的日期分别为2月18日、2月7日、1月26日、2月14日和2月3日。为什么会这样?到底是怎么计算的?

    我看了一些资料,下面就是我整理的关于历法知识的笔记。完全根据我自己的理解来写,说得不对的地方,欢迎指正。

    1. 什么是公历?

    公历又称阳历,是全世界目前通行的历法,以地球绕行太阳一圈作为一年。我国从1911年辛亥革命后,开始采用公历。

    2. 什么是闰年?

    闰年是为了解决公历年与太阳年之间的差异,而做出的安排。

    地球公转一圈的准确时间是365天5小时48分46秒(365.242199174天),而公历年一年只有365天,所以每年会多出5小时48分46秒,每4年就会多出23小时15分4秒,约为1天。因此,公历规定,凡是能够被4整除的年份,该年就增加一天(2月29日)。这就是闰年的来历。

    但是这样一来,时间还是不对,每4年多了一天以后,会比公转周期提前44分56秒。这就是说每400年就会比公转周期提前3天,因此每400年中需要少闰3次。所以公历又规定,凡是尾数为00的年份,只有能被400整除的才是闰年,否则就不算。比如1600年和2000年都是闰年,但是1700年、1800年、1900年都不是闰年。

    但是,即使这样计算,每400年中,公历仍然要比公转周期快出2小时50分20秒,因此大概每过3000多年,公历还要再减少1天。

    3. 什么是农历?

    农历是中国古代的历法,同时考虑太阳和月亮的位置,来确定日期。因此,从性质上说,农历是阳历和阴历的结合,属于阴阳历。

    4. 农历的一年如何确定?

    在农历中,月亮围绕地球旋转一圈,就被算做一个月。从地球上观察,一个月就代表月亮盈亏的一个周期。农历规定,新月出现的那天就是每个月的初一,满月出现的那天就是每个月的十五。

    月亮围绕地球旋转一圈的准确时间是29天12小时14分3秒(29.5306天)。因此,在农历中,一个月可能是29天(小月),也可能是30天(大月)。农历规定,月亮每盈亏12次,就算为一年。

    这里需要注意的是,大月和小月不一定间隔出现,有可能几个大月连在一切,也有可能几个小月连在一起,一切要根据月亮的盈亏时间而定。

    5. 什么是闰月?

    闰月是为了解决地球公转周期与农历之间的差异,而做出的安排。

    按照农历,大月为30天、小月为29天,全年12个月,一年仅有354天,比公历要少11天。这就是说,农历中的日期,在每一个公历年中,都会比上一年提前11天。

    为了保证每年的正月是在冬季,所以农历规定,每过3年左右,就多设置一个月,与公历周期保持稳定,这就是闰月。

    更精确的描述是"十九年七闰",即19年中设置7个闰月,这样一来,农历与公历的周期就基本一致了。

    6. 什么是节气?

    节气是中国古代为了测定季节,所设立的一种历法标志,配合农历使用。

    根据日晷,我们的祖先将每年日影最长的一天定为"冬至",日影最短的一天定为"夏至"。在春秋两季中,各有一天的昼夜时间长短相等,便分别定为"春分"和"秋分"。然后以这几个日期为基准,再定出其他的节气,合称24节气。

    从天文学上看,地球公转一周是360度,因此地球每前进15度,就是一个节气。我们现在知道,冬至和夏至分别是太阳直射南北回归线,春分和秋分是太阳直射赤道。

    一年有12个月,因此每个月有两个节气。前面一个称为"节",后面一个称为"中",两者相差15天左右。所以,24节气又分为12节气和12中气。

    前面说过,农历年比公历年少11天。因此,节气作为一种太阳位置的标志,在农历年中,每年都会比前一年晚11天。比如,2007年清明节是农历2月18日,2008年清明节是农历2月28日,2009年清明节是农历3月9日,每年都相差11天左右。如果前面一个节气在农历15号之后出现,那么后面一个中气就排不进这个月,所以农历中经常出现没有中气的月份。

    7. 闰月是如何确定的?

    闰年的设置方法,以每年的冬至为计算基准。一般来说,两个冬至之间应该有11次月亮的盈亏(不考虑两个冬至本身所在的月),但是由于农历年比公历年少11天,所以有可能出现两个冬至之间有12次月亮的盈亏。如果发生这种情况,则从冬至开始的这一年中,将加入一个闰月。

    具体规则是,从"冬至"开始,当出现第一个没有"中气"的月份时,这个月份就是闰月,其名称是在前个月的前面加一个"闰"字。

    8. 春节是如何确定的?

    春节的日期是根据每年的冬至计算的。

    农历规定,冬至必须在农历11月。所以,冬至最早可能是农历11月初一,最晚可能是11月三十。由于在公历中,冬至一般是12月21日或12月22日,而冬至与春节之间最短相差30天,最长相差60天。所以,春节最早是1月20日,最晚是2月20日。


    (完)

  • 相关阅读:
    [Kotlin] Open Classes and Inheritance
    [Kotlin] Class
    [Kotlin] Reverse a List with downTo
    [Kotlin] Named loop
    [Kotlin] for loop
    [Kotlin] Array List ArrayList
    深度解读 java 线程池设计思想及源码实现
    源码实战 | 从线程池理论聊聊为什么要看源码
    自己实现一个简单的线程池
    死磕 java线程系列之自己动手写一个线程池(续)
  • 原文地址:https://www.cnblogs.com/cxbblog/p/4244428.html
Copyright © 2011-2022 走看看