![]()
今天是大年廿九,也是甲辰龍年的最后一天。俗稱除夕的這一天有時是大年三十,有時是大年廿九,而未來五年都沒有大年三十。究竟是什么力量左右了大年三十是否出現呢?
翻看農歷不難發現,一個農歷月可以有30天,也可能是29天。所以當臘月有30天,那么就有大年三十,如果臘月只有29天,那么就只有大年廿九。那么如何確定一個農歷月是30天還是29天呢?按照現行農歷的編排規則,農歷月的第一天必然是朔日,朔日即日月地心視黃經相等時刻所在的農歷日。
![]()
日食發生時日月黃經相等,所以日食必然出現在農歷初一︱Yuri Beletsky
我們通過現代天文學手段獲得每一次日月地心視黃經相等時刻,得到朔日所在,也就知道了每個農歷月第一天即初一的位置,相鄰兩個農歷初一之間就是一個農歷月,如果相鄰農歷初一之間相隔29天,這個農歷月就是小月;如果相隔30天,這個月就是大月。造成未來五年沒有大年三十的直接原因就是這五年的臘月初一和正月初一之間都只隔了29天,使得年三十無法現身。
不難發現,有沒有年三十,實際上跟如何確定初一有緊密關系。而確定初一就是編排現行農歷的關鍵一步。關于現行農歷,最權威的參考是2017年頒布的推薦性國家標準GB/T 33661-2017《農歷的編算與頒行》。這份標準在線即可預覽[1],其中最關鍵的是以下幾行文字:
![]()
GB/T 33661-2017《農歷的編算與頒行》
下面我嘗試帶大家理解這兩百余字背后的內涵與邏輯。
首先是4.1
4.1 以北京時間為標準時間
作為一部要在中華人民共和國境內行用的歷法,基于北京時間制定是非常合理合法的事情。北京時間0時~24時為一個農歷日。
然后是4.2和4.3
4.2 朔日為農歷月的第一個農歷日
4.3 包含節氣冬至在內的農歷月為農歷十一月
如果你一直不理解農歷為什么是陰陽歷,這兩條規則就是最好的解釋。
首先一個農歷月的第一天是由朔日決定的,所謂朔日是指包含朔在內的農歷日。那么何為「朔」呢?朔指的是月球和太陽的地心視黃經相等的時刻,也指這一時刻的月相。這一條規則顯然對應了農歷之中與月球相關(陰)的部分。
4.3規定包含冬至的農歷月為農歷十一月,冬至在天文學上指太陽地心視黃經為270°的時刻。雖然農歷一年是以農歷正月為起始月(見4.5),但定位正月的前提是確定農歷十一月。可以說冬至時刻才是農歷真正的起算點,以歷法的術語表示,冬至是農歷的歷元,而正月初一是農歷的年首。規則4.3無疑體現了農歷之中「陽」的部分。
4.4是關于農歷置閏的
4.4 若從某個農歷十一月開始到下一個農歷十一月(不含)之間有13個農歷月,則需要置閏。置閏規則為:取其中最先出現的一個不包含中氣的農歷月為農歷閏月
在以4.2和4.3確定農歷十一月初一的位置以后,接下來就是確定從一個農歷十一月到下一個農歷十一月(即下一個冬至所在的農歷月)的月份編排。
方法也不難,首先找到朔日,相鄰兩個朔日之間就是一個農歷月。這時候不要急著給農歷十一月之外的月份命名,首先要數一數兩個農歷十一月之間有多少個月份,如果有11個農歷月(不包含兩個農歷十一月),就正常按時間先后順序命名為十二月、正月......到十月;如果兩個農歷十一月之間出現了12個農歷月,就意味著有一個農歷月需要特殊處理。2025乙巳蛇年之所以是閏年,因為從2024年冬至日(2024年12月21日)到2025年冬至日(2025年12月21日)之間有13個農歷初一,從一個初一到下一個初一(不含)之間為一個農歷月,即有12個完整農歷月。按照規則,這12個農歷月中會有一個閏月。
如何找到這個需要特殊處理的月份呢?這時候再次涉及到農歷的陽歷部分:我們要找到除冬至以外剩下11個中氣[2]的時刻,看看11個中氣分別在哪個農歷月中,首先出現的沒有中氣的月份就是我們要找的特殊月份,稱為閏月。閏月之外的月份正常命名,閏月則以其前一個正常月份的名稱前加「閏」的方式命名。以即將到來的2025乙巳蛇年為例,這一年的大暑(7月22日)和處暑(8月23日)之間存在一個完整的農歷月,這個農歷月是該冬至周期(2024年12月21日~2025年12月20日)的第一個無中氣農歷月,屬于閏月。該閏月前一個農歷月是六月,所以這是一個閏六月。
![]()
2025乙巳蛇年閏六月
置閏這一條農歷規則可能是不少人對農歷的最大疑問。只要農歷還是一種陰陽歷,堅持調和陰陽的目的,其置閏方式就不可能像公歷一樣在某些年份添加閏日來解決,而是必須添加一個完整歷月以匹配月球的運動。閏月不是農歷的bug,而是陰陽歷的feature。
現代農歷編算規則的最后一條
4.5 農歷十一月之后第2個(不計閏月)農歷月為農歷年的起始月
可能有些同學不解為什么這條規則要放在最后,特別是為什么要放在農歷置閏規則的后面,直接說農歷正月是農歷十一月之后第2個月不對嗎?還真不行,因為閏月完全有可能會在農歷十一月和農歷正月之間出現(如2033癸丑牛年閏十一月),這時候正月就會是十一月之后的第三個農歷月。
![]()
2033癸丑牛年閏十一月
綜上,現代農歷編排的邏輯鏈為:
1.根據月球位置確定朔日,即每個農歷月的初一。從一個朔日到下一個朔日(不含)為一個農歷月,此時可知每個農歷月的大小(大月30日,小月29日)
2.根據太陽位置確定冬至時刻,冬至所在農歷月為農歷十一月
3.結合1、2給出連續兩個農歷十一月之間的農歷月數量,判斷是否需要置閏
4.如需置閏,根據太陽位置確定中氣時刻,首先出現的一個不包含中氣的農歷月為農歷閏月
5.農歷十一月之后第2個(不計閏月)農歷月為農歷年的起始月
結合1~5確定正月初一及全年日期編排
![]()
農歷編排簡明流程
可以看到這一套流程還有兩個大前提,就是需要精確的太陽和月球位置,這就是為什么說國家標準中第5部分同樣關鍵。
5.1 太陽和月球的位置按國際地球自轉和參考系服務規范規定的模型計算
5.2 朔和節氣的北京時間計算精度應達到1s;不計及編算時尚未正式發布的閏秒
現代農歷的編排規則其實與明末以來的官方歷法大體一致,現代農歷置閏規則的前身「無中氣置閏」更是自西漢太初歷起便有之。現代農歷之所以現代,正是因為接軌了現代天文學,太陽和月球位置以及相關的朔與二十四節氣時刻都是基于現代天文學模型的計算結果。
如果你堅持讀到了這里,相信你已經對如何確定現代農歷有了初步認識~最后祝各位看官在即將到來的農歷蛇年心想事成,巳巳順利~
參考&拓展
[1]傳送門:https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=E107EA4DE9725EDF819F33C60A44B296
[2]中氣指從冬至開始的二十四節氣中逢奇序數的節氣,即:冬至、大寒、雨水、春分、谷雨、小滿、夏至、大暑、處暑、秋分、霜降、小雪。
往期熱門
![]()
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.