是闰岁,无需加入闰月。2033 年冬至(11 月)到 2034 年冬至(11 月)间有 12 个完整的农 历月,所以是闰岁,以冬至日后出现的第一个无中气的农历月为闰月,正好是 11 月后面的一个农 历月,于是就闰 11 月。
总的说来一句话,无中气只是闰月的必要条件并非充分条件,只有岁内月朔太多需要置闰月时, 才会寻找岁内第一个无中气的作闰月。旧版历法以 2033 年第 8 农历月为闰 7 月,只因为它是 年内第一个无中气的农历月,并未考虑到是否闰岁的情况。新版已经改为了闰 11 月。
另外,由于目前节气采用定气,地球在远日点时运动速度慢,导致中气在冬天里推迟比夏日里 慢,因此无中气的月份大多都落在夏天前后,几百年来极少有出现闰 12 月的,这基本保证了春节 的唯一。农历历法的精妙可见一斑。
注:中国现代的历法以南京紫金山天文台发布的内容为权威。如本文的阐述和该权威有冲突, 以该权威为准。
2)农历计算
从上文的农历规则来看,农历完全是天文历法,加上月亮运动规律的不稳定,导致很难对其进 行精确计算。目前权威的计算方法是根据天文观测数据建立月球、地球、太阳的运行数学模型来精 确计算各个朔日与中气的时刻再加以历法推算。
CnCalendar 中的公历转农历的函数移植自中国日历类的 Javascript 源码,实现了公元前 850 年到公元后 2100 年的公历到农历的转换。但因为算法的复杂性,此处无法详细阐明。
6、计算数九与三伏
数九也称九九,是从冬至日开始的 81 天,每 9 天称为一个九,第 10 天称为二九第一天, 冬至日本身是一九第一天。CnCalendar 中计算某公历年月日的九九数时首先算出本年的冬至日, 如果此日在冬至日开始后的 81 天内, 则表明在九九日内, 可通过整除求余等求出是几九的第几天。 如果此日落在本日冬至日前,则检查是否处于上一年的冬至日的 81 天后,是则再计算一遍,因为 九九日一般都会跨越两个公历年的交界时。
伏日的计算稍微复杂点,按传统,每年夏至后的第三个庚日(天干)起的 10 天为初伏,夏至 后的第四个庚日起为中伏,如果第五个庚日落在立秋前则中伏算 20 天,否则 10 天,立秋后的第 一个庚日起的 10 天为末伏。另外计算庚日时夏至立秋本身不计算在内,也就是说如果夏至日本日 是庚日,它的后 10 天才算第一个庚日,立秋与此相同。
7、计算入梅出梅
入梅和出梅是指江南一带梅雨季节的开始和结束, 入梅日规定为芒种之后的第一个丙日 (天干), 出梅日则是指小暑之后的第一个未日(地支),和上面的类似,计算日的天干地支数时芒种和小暑本 日同样不计算在内。
手册,免费。
8、计算日出日落
该部分算法移植自“时间科普网站” ,此处无法详细阐明。
四、参考内容与致谢
CnCalendar 的开发主要参考了以下内容,在这里对作者们的无私奉献表示敬意。
l 《新编万年历》,实际有百年左右,包括一些历法说明与计算。
l “知来者”日历源码以及“中国日历类”源码,JavaScript 编写,节气算法和公历转
农历算法自此移植而来。
l 林洵贤的万年历 JavaScript 源码,参考。
l “日梭万年历”5.2 beta 版,用来核对部分计算结果。
l “时间科普网站” :, 日出日落计算代码自此移植而来。
五、联系我们
开发网站:
开发论坛:
管理员信箱:master@
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试阴历算法CnCalendar(4)在线全文阅读。
相关推荐: