在农历计算中,闰年与公历闰年差别很大。公历闰年仅需按年份处理2月即可,而农历闰月是不定的,须按相关规则来置闰,其中,年首和年尾两端的置闰最容易出错。于是,二十四节气的中气计算最大得跨越3个年度,朔日计算最大也得跨越3个年度,以便正确处理月份置闰问题。完成全部的Delphi代码之后,无意中发现了一个隐藏极深的问题,目前公认且在网上(百度百科等)流传极广的夏至日期在公历6月21日至6月22日左右的说法怕是有漏洞!计算发现,公元331年的夏至在6月24日0点16分左右,公元2888年的夏至在6月19日22点12分左右,与寿星万年历的计算结果相一致。由此来看,通行的二十四节气日期在两三天内波动的观念得打个问号了,至少对夏至而言并非如此!至于其他一些个别历史原因造成的日期偏差,以及气朔方法不同所造成的置闰差异等非计算性问题,暂时搁置。试验发现,农历闰月出现的频率反差极大。闰五月最为常见;闰四月和闰六月也较为常见;闰二月、闰三月、闰七月、闰八月其次;闰九月再其次,且闰九月出现的年份也较少;闰十月、闰冬月(十一月)出现的频率更少,属于罕见的闰月;闰正月、闰腊月(十二月)最为稀罕,属于特殊闰月,古时候甚至作为不宜置闰的月份而加以回避,否则就有可能面临是否要过两个除夕和两个春节的棘手问题了。
附1:若干罕见闰月的年份(按出现频率高低排列)
闰九月:1737、1756、1832、2014、2109、2204、2223、2576、2720、2739、2815、2834、2853、2929,3000年后忽略;
闰十月:1775、1870、1984、2166、2318、2386、2481、2500、2595、2872、2891、2967、2986,3000年后忽略;
闰冬月(十一月):2033、2128、2147、2242、2614、2728、2910,3000年后忽略;
闰正月:1651(历史上置闰到二月)、2262、2357、2520、2539、2634,3000年后忽略;
闰腊月(十二月):3000年后才会出现,忽略。
(注:闰正月和闰腊月我们近几代人都不会见到,将来也未必会真正实施。)
附2:公历闰二月恰逢农历闰二月的年份
1928、2004、2376、2748,3000年后忽略。
附3:2033年(癸丑)闰冬月时间
公历2033年12月21日21:45冬至(太阳黄经点)
公历2033年12月22日02:46初一(日月合朔时)