陰曆正月與置閏

古希臘雅典的天文學家Meton觀察到19個回歸年的週期幾乎剛好等於235個朔望月的週期;換算成日,取四捨五入則為6940日;這兩個週期之差僅為2小時。

中國古人也發現了這個特性為了讓陰曆年的12個月能與太陽年並進,就必須在這19年中的某7年裏各加入一個閏月。(因一年設為12個月19年只有228個月235個月少了7個月必須設法將此7個月插入19年中才能使陰曆年以235個朔望月為週期與迴歸太陽年19年同步)這種方法並不理想因為不是真正的同步畢竟還是差了兩小時許多年後誤差更大那麼中國人是用什麼方法使陰曆年始終能配合陽曆年的進行呢

有一個說法是遵循下面兩個原則來決定正月和閏月:

1.       含雨水中氣的朔望月定為正月

2.       不含中氣的朔望月定為閏月。

但根據這兩個原則以程式算出的結果顯示了嚴重的問題,下列年度(針對1500-2500年之間)的末月均含雨水,而與次年的含雨水正月衝突,即使做了修正也無法與真實資料完全相符。

16611699181318321851198420332052212821472166218522042242231823372424

也有人說可以比較時刻法來避免這種情況,但即使用比較時刻法,還是有同樣的問題,下列年度的末月均含雨水,而與次年的含雨水正月衝突。

16801699171820522071240524242443

第二種說法是遵行下面兩個原則:

1.       找出連續兩個冬至,看這兩個冬至所在的朔望月之間含有幾個朔望月。

2.       若含11個朔望月,則不必考慮閏月問題,若含12個朔望月,則其中必須有一個月為閏月,因兩個冬至之間只有11個中氣,此時找到第一個不含中氣的月,即可設定其為閏月。

根據這兩個原則以程式算出的結果顯示與實際資料是相符的。這種方法可保證冬至點一定含在11月中,但卻不能保證雨水點一定含在正月中。若以比較日期法計算,則下列年度的正月就沒有包含雨水日。

16621700183318521985203420532129214821672205224323192425

若以比較時刻法計算,則仍有下列年度的正月不包含雨水時刻。

170017192053207224252444

雖然實際情況是絕大部份的年度其正月都包含了雨水,但只要有例外的,我們就不能以正月包含雨水作為設計程式的原則。

 

以上面的第二種方法為陰曆置閏,其程式設計步驟如下:

1.       找出指定年前一年冬至點為起點的連續16個中氣點。

2.       找出包含指定年前一年冬至日的朔望月新月點(或合朔時刻)及其後連續共16個新月點。

3.       若指定年冬至日大於或等於第13個朔望月,則此置月年(連續兩個冬至之間)必有閏月,含13個月。否則無閏月,只含12個月。
若含12個月,則直接賦予各月代碼。若含13個月,則比對各中氣日與新月日,若陰曆臘月(12)起始日大於冬至中氣日,且陰曆正月起始日小於或等於大寒中氣日,則此月為閏月,其餘同理。找到閏月後就不需再比對。賦予各月代碼,包含閏月,11月代碼為012月代碼為1,正月代碼為22月代碼為3,餘類推。閏月多加0.5,譬如閏6月,就以代碼7.5表示。

 

比較時刻法和比較日期法的差別只在於對比的是時刻還是日期。以1984年的冬至點為例,

其時刻我們以X表示,X=12220233秒,它附近的新月是1222194636秒,次一新月為1985121102816秒。若以比較時刻法,則X不在此兩個新月時刻之間,而是在它們之前,也就是X不滿足下列的不等式:

19841222194636<= X <1985 121102816

因此X被判定是落在前一個朔望月內。但若以比較日期法,則前述冬至點所在之日期,以Y表示,Y=19841222日,Y與第一個新月點為同一日,也就是它能滿足下列的不等式:

19841222<= X <1985 121

依此定義則這兩個新月間的朔望月包含此冬至日Y,故此朔望月即為年度置月的第一個月,即11月。

歷來中國陰曆置月都是以比較日期法來制定的。雖然有人認為以比較時刻法來為陰曆置月比較精確,但古人使用比較日期法或許就是因為當時無法做到很精確的測量。而目前使用的比較日期法,只要在計算時沒有矛盾之處,就應該是可以接受的。