氣候由冷到熱,再由熱到冷變化的周期內,也就是一個回歸年內,月亮圓缺變化12次,因此,陰曆以12個月算一年,共354天或355天。陰曆一年如果是354天的時候,比回歸年少11天多,一年是355天的時候,比回歸年少10天多,這樣三年不就是就要少30天嗎?為了和氣候冷熱變化的周期相一致,就需要增添一個月,這個額外增加的月就叫閏月。有閏月的歷年是383天或384天,有閏月的年叫閏年,沒有閏月的年叫平年。
但是每三年增加一個閏月,並不能完全解決問題,因為陰曆每三年比回歸年短33天左右,而增添一個閏月也只有29天或30天,仍然少3天左右。這怎麼解決呢?我國勞動人民很早就採用了「十九年七閏」的方法。也就是每19年當中,有7個閏月。這樣19個陰曆年和19個陽曆年的日數,就差不多相等了,只有2小時之差。因為19個回歸年等於235個朔望月,19個陰曆年等於228個朔望月,比回歸年少7個月,所以19年中有7個閏月,這樣陰曆和陽曆就很好地調和起來。
農曆的閏月究竟放在那呢?歷史上曾經有過不同的處理方法。大致上,在西漢初期以前,都是把閏月放在一年的末尾。到了後來,隨著曆法的逐步精準,安置閏月的方法也有了新的規定。這就是把不包含有中氣的月份作為閏月。這個置閏規則一直到今天仍在使用。
為什麼農曆有的月份會沒有中氣呢?我們知道二十四節氣當中,有十二個節氣和十二個中氣,比如立春為節氣,雨水為中氣。節氣一般都是放在每個月的前半個月,中氣都放在後半個月,兩個節氣或中氣之間平均數為365*2422/12=30.4368日,而一個朔望月是29.5306日,兩者有將近一天的差數。因此,節氣和中氣在農曆月份中的日期會逐月有將近一天的推遲。這樣繼續下去,必然有的月份中氣正好落在這個月的最後一天,那麼下個月中就沒有中氣了,而是發生在下一個月的約初了。
按照曆法規定,每個月都有自己固定的中氣,那麼,把沒有中氣的月叫做閏月就是很自然的了。例如:今年2020年,正月二十一立春、二十六雨水,二月二十驚蟄、二十七春分,三月二十清二十七穀雨,四月十三立夏、二十八小滿。那麼下個月的十四日是芒種,中氣夏至就到了再下個月的初一了。因為這個月只有節氣芒種沒有中氣夏至,所以這個月就是閏月,因為這個閏月是四月中氣推遲到月末造成的,所以這個月就定為閏四月,所以今年就是閏四月了。
按照「十九年七閏法」和沒有中氣的月為閏月的置閏規則,農曆的閏月就可以確定了。當然,這必需經過繁重的計算才能具體地決定出閏月的安排。從1949年到2020年農曆閏月的情況如下:
從這個表中可以看出,閏四、五、六月特別多,閏九、十月特別少,尤其是沒有閏十一、十二和正月。這是什麼原因呢?原來,兩個中氣之間的時間間隔並不是都一樣,前面提到的30.4368日只是個平均數。實際上,地球繞太陽運動的軌道是橢圓的,太陽位於橢圓的一個焦點上。軌道上距離太陽最近的點叫「近日點」,最遠的點叫「遠日點」。地球在遠日點時,由於引力小運動慢,兩個中氣間的時間間隔就長,最長達到31.45日,因此不含中氣的可能多,閏月出現的機會就多。反之,在近日點附近時由於太陽對地球引力大,地球運動快,兩個中氣間的間隔就短,最短的只有29天多,因此不含中氣的機會就少,閏月出現的機會也就少了。
過去有一種說法叫「閏四月,兆荒年
」和「閏四月,兩頭春,老農民買兒孫」的說法,從以上來看是完全沒有科學道理的。