公歷是以地球繞太陽運行一周為一個回歸年,總長度需時365.2422天:農歷是以月球繞地球運行12圈即12個朔望月為一年,一個朔望月,長度時間為29.5306天,12個朔望月是3543672天,比公歷一個回歸年要少將近10.88天,三年后就少了30多天,以此發展下去,就會使氣候顛倒,可能在新正大月里就立了秋,冬季就變成了夏天,會造成“十冬臘月漲大水,沖得滿地高粱頭”。出現這種時序錯亂的怪現象,使天時和歷法不相符合,為了克服這一缺點,古人在天文觀測的基礎上,找出來閏月的辦法,保證了農歷年的正月到三月為春季,四月到六月為夏季,七月到九月為秋季,十月到臘月為冬季,也同時保證了農歷歲首在冬未春初。這就是安排閏月的科學道理,農歷三年逢一閏就是這么來的。
閏月放在哪里,也不是隨意安排的。農歷雖然以月亮每次圓缺為一個記時單位,即每個月的大致時間為29.5天左右。二十四節氣卻是由地球繞太陽旋轉時在軌道上所處的位置確定的,這個軌道是360度的大圓圈,從零度起每轉15度(大約15天左右)為一個節氣。所以農歷不是純陰歷,而是陰陽合歷,利用二十四節氣指導各季節的事活動是很科學的。農歷規定立春、驚蟄、清明等十二個為節氣(都在公歷的上半月);雨水、春分、谷雨等十二個為中氣(都在公歷的下半月),而且要求每月要有固定的中氣。即雨水必須安排在正月,春分一定要安排在二月,冬至安排在十一月,大寒安排在臘月。這樣一來,就出現了很不協調的問題。因為公歷地球繞太陽一周的時間是365天5小時48分46秒.12個中氣之間的平均間隔約為30.5天,而農歷月球繞地球一圈的時間只是29.5天,一個月要差1天,因此二十四節氣在農歷上的日期就不是固定的,要逐月推遲1天,一年累計就要推遲11天左右。由于農歷大月只有30天,小月是29天,中氣日期推遲到某個月末時,下個月就可能沒有中氣了,因此農歷又規定凡排不出中氣的月份,就是上個月的閏月。
今年是農歷壬辰年,四月三十時小滿(是中氣),下個月中氣就排不上了,得錯后一個月才能出現,這個沒有中氣的月份就得安排閏月。所以,今年農歷龍年就有兩個四月了。