原文發表于簡書
(一)abpw10字數 2535 · 閱讀 272020-01-17 20:56
(二)abpw10字數 3111 · 閱讀 592020-01-18 01:15
(三)abpw10字數 3280 · 閱讀 522020-01-18 15:09
說起農歷,很多人只知道它是中國古代的歷法,今天我們只有到了傳統節日才會想起它,農歷的價值在一點點地縮水。日本人已經廢除了農歷,雖然他們也過我們的傳統節日,但都是按公歷的日期過,八月十五也不一定有一輪圓月。實際上,農歷原本叫夏歷,是中國古代一直使用的官方歷法,而且它從被創造出來至今,已經運行了幾千年。它也不是一成不變的,計時方法經過了數次修訂,其中蘊含了中國古代勞動人民、甚至是外國友人智慧的結晶。
我們了解農歷,大都從月亮的圓缺變化開始的,人們都知道,農歷的一個月就是月亮圓缺變化的一個周期,稱為朔望月,初一為朔,十五為望,每個月都是二十九天或三十天,一個月一個月地周而復始。此外,還會注意到,時隔兩三年就有閏月,有閏月的年份,比常年多了一個月,這是因為太陽公轉一年的周期,比十二個朔望月的周期長一些,最直觀地表現為,沒有閏月的年份,下一年的農歷春節在公歷中的日期都比上一年提早11天;為了讓農歷的年始終能大致和公歷的年保持同步,才插入閏月,有閏月的年份,下一年的春節就比上一年推遲20天。所以農歷有的年份是355天,有的年份又是385天。可能對于習慣了公歷的人們來說覺得不方便,所以它被今天的人們放棄了。看上去農歷只是為了與月亮的周期相符,而造成一年的長度都不確定。
根據月球周期制定的歷法也有一些眾所周知的特點:農歷的日期永遠和月相對應,只要看月相就知道今天大概是多少日,反過來知道今天是多少日,也能知道今晚的月相,這是公歷不可能做到的;外國人需要了解月相的,會把每天的月相畫在日歷上,不過我們中國人只要知道農歷的日期,就大概知道對應的月相。日食一定發生在農歷初一,月食一定發生在農歷十五,但看公歷的日期是沒有這種規律的。
根據月球周期制定的歷法,不僅有中國的農歷,其他地方也有這樣的歷法,伊斯蘭教歷就是這樣的歷法,穆斯林們所過的節日——開齋節、古爾邦節,以及“齋月”,都是根據這種歷法。它也是以月亮的圓缺周期為一個月,不過它的每一年都是12個月,不像農歷有閏月。所以,伊斯蘭教歷的每個月和農歷的每個月都剛好對應,只不過名稱不同——你的三月可能是我的五月,你的五月可能是我的十月。不設置閏月的后果,就是伊斯蘭教歷的每一年都比公歷的一年短!在公歷622年到1582年的960年間,伊斯蘭教歷已經過了989年!你會看到穆斯林的節日開齋節、古爾邦節和齋月有時是在夏天,有時是在冬天。伊斯蘭教歷是完全不考慮太陽的運動周期,也就是“太陽年”的歷法,屬于純陰歷。
農歷在歷法分類中屬于“陰陽歷”,雖然我們通常會稱它為“陰歷”,而實際上,農歷與純陰歷的區別,就體現在它和“太陽年”的相互配合,讓每一個農歷年都和一個陽歷年大致對應。前面我們已經提到,增加閏月,就可以校正農歷年和陽歷年的偏差。關于農歷設置閏月的說法,最著名的是“19年7閏”。有了閏月以后,農歷年和陽歷年能夠對應起來,使得每一年的春節都是在冬季。如果你經常注意觀察農歷,可能會發現一些特點,并產生這樣的疑問:閏月加在哪年哪月究竟是怎么決定的?為什么春節最早在1月21日、最晚在2月20日,總是落在這兩個日期之間?為什么我們經常看到閏五月、閏八月,很少看到閏正月、閏十二月?
小時候筆者沒事時常翻看老爸的老式翻蓋觸屏手機上的日歷,有時看到閏五月、閏八月,就想著到那一年是不是就要過兩次端午節或中秋節。那假如有閏十二月,是不是要過兩次除夕?為了找出究竟有沒有閏十二月,我記得我翻了好多好多年,還真的在有一年看到了,不過現在我已不記得是哪一年了。當時我就想,閏十二月、閏正月這么罕見的原因,應該是有人為規定,少讓這兩個月出現閏月,否則除夕和春節真的不知道該什么時候過了吧。閏月的安插真的是隨心所欲的嗎?為什么在網上可以查詢到的“萬年歷”,把幾十年、甚至幾百年后的農歷月日都寫得清清楚楚,難道有人早就“欽定”了我們幾十年、幾百年后,該在哪一天過春節、端午節、中秋節?假如只是在需要跟上太陽運行周期的時候,在任何想要加的地方加上一個閏月,未免顯得這種“陰陽歷”太沒技術含量,也不太有說服力。
對于這些問題,筆者從前除了了解“19年7閏”這一說法之外,關于農歷設置閏月的法則當中更深入的細節,鮮少看到有資料提及。但其實,它與月亮和太陽的運動有著密不可分的關系。
二十四節氣大家耳熟能詳,也知道它是古代勞動人民的偉大發明創造,它可以指導農事生產。但不做深入了解,很難把它與農歷的月份和日期聯系起來。因為二十四節氣的日期總是更多地與公歷對應。清明節——一個中華民族的傳統節日,它對應清明節氣,日期總是在公歷4月4日或5日,與其他傳統節日相比顯得獨特。可能有的人會這么說,中國古代沒有公歷,只有農歷,這是一種根據月相制定的歷法,但他們創造了與公歷對應得這么好的二十四節氣作為補充,如果古代人知道公歷,可能他們發現二十四節氣就會更加容易,甚至有可能都不需要創造二十四節氣了!這種說法有些欠妥,事實上,我們的古人早就知道一太陽年是365.24天了。在此基礎上創造的二十四節氣,是我國古代歷法的一部分。二十四節氣與我們通常所知的農歷月,共同構成了我國傳統歷法——農歷,甚至二十四節氣扮演的就是在農歷的編排中至關重要的角色!
二十四節氣就是把地球繞太陽公轉的軌道圓周360°,分成二十四等分,每十五度為一個等分。在國外,人們通常只知道其中的4個節氣:春分、夏至、秋分、冬至。歪果仁會告訴你:3月21日春天來了,6月22日夏天到了,9月23日秋天來了,12月22日冬天到了。至于立春、雨水、小寒、大寒等節氣,是無法翻譯成英文的。中國是一個農業大國,農事生產的需求,促成我們的先輩發展出了對地球繞太陽公轉軌道更細的劃分——二十四節氣。
西方也有一些對地球繞太陽公轉軌道的劃分方法——十二星座就是我們非常熟悉的,它把地球繞太陽公轉的軌道劃分成了十二個部分,每個部分都對應著該日期內太陽在天空中所處的星座,又叫“黃道十二宮”。它的起點是3月21日的春分,每年的日期固定,每個星座差不多對應著二十四節氣的一個“中氣”。不同的是,十二星座最終走向了神學的領域,而中國的節氣,從指導農事生產的初衷出發,經過不斷的改造,向著科學的方向靠攏,成為量度太陽運行的一把標尺。
二十四節氣究竟是怎樣決定農歷的?農歷之所以屬于“陰陽歷”,在于它不僅僅是根據月亮的周期制定的,它也反映了太陽運動的周期,二十四節氣就是其中最顯著的部分。二十四節氣的周期大約是365天,反映了中國古代的先人們對太陽運動的周期早就有著清楚的認知。那么二十四節氣、農歷與太陽和月亮的運動具體有什么樣的關系?
在歷法中,對二十四節氣有著更詳細的劃分,人們將二十四個節氣分成兩類:“節氣”和“中氣”。“節氣”和“中氣”各有十二個,相間排列。古人視春分、夏至、秋分、冬至等為較大的節氣,因此從這些節氣開始,此后偶數個節氣都是“中氣”,簡稱“氣”所以“中氣”有冬至、大寒、雨水、春分、谷雨、小滿、夏至、大暑、處暑、秋分、霜降、小雪這十二個。“中氣”之間的另外十二個:小寒、立春、驚蟄、清明、立夏、芒種、小暑、立秋、白露、寒露、立冬、大雪,則是“節氣”,簡稱“節”。二十四節氣是“節”與“氣”,或者說“節氣”與“中氣”的合稱。
我們都知道一年大約365.24天,按照二十四節氣是將地球繞太陽公轉一周(一個太陽年)二十四等分的定義,每個節氣大約是365/24≈15.2天,而相鄰兩個“中氣”的間隔是30.4天,這與月球繞地球轉的一周的時間(一個朔望月)約29.5天差不多,但稍長了一點兒。這點差距造成公歷的一年不是剛好等于12個農歷月。這些時間點可以精確到分,例如我們看到有的臺歷上會寫得很詳細:“今日x點x分立春”等等。正是因為“中氣”的間隔比一個朔望月稍長,所以一個朔望月中可能沒有“中氣”。如果前一個中氣剛好發生在一個朔望月周期開始之前,而下一個中氣則發生在這個朔望月周期結束之后,在這個朔望月中就沒有中氣。
我們都知道,“夏至”是太陽直射點最北的時刻,“冬至”是太陽直射點最南的時刻,“春分”和“秋分”,是太陽直射赤道的時刻,它們代表的是地球繞太陽公轉軌道上的特殊點,由此引出的“十二中氣”的概念,就代表使用特殊點對地球繞太陽公轉軌道進行的劃分。而“朔”代表的是月球運行到地球和太陽之間,“望”代表的是地球處在月球和太陽之間,“朔”和“望”就是月球繞地球運行軌道上的兩個特殊點。二十四節氣和農歷的月份,原來正好分別對應著太陽和月亮的運行!現在最廣泛使用的公歷,雖然也是根據太陽年制定的,并且將地球繞太陽公轉一周的時間分成了12個月,但它的每個月的起始并不對應著軌道上任何特殊點,春分、夏至、秋分、冬至這些特殊點,在公歷中的日期也飄忽不定地呈現出1~2天的波動。公歷的優點在于每個月的日數固定,便于人們掌握。公歷以它的簡單贏得了人們的青睞,但不應該忽視農歷的二十四節氣和月份,對太陽和月亮運行的精確描述!
理論上,公歷可以規定任何一天為1月1日,同樣,農歷也可以規定任何一個月為一月,那么就必須選擇一個基準,使大家有章可循。古人認為冬至是一年的開始,至今許多地區還保留著過冬至的習俗,也有“冬至大過年”的說法。可以考證,夏商周時期,“正月”指的是十一月而不是現在的一月。現在仍然看到某些日歷上把農歷十一月標注為“冬月”,可能我們會覺得那只是省字而產生的簡寫,為了避免寫三個字,農歷十二月有別稱“臘月”,那么另一個冬天的月份十一月,可以簡稱為“冬月”而不致引起混淆。其實這是有根據的,因為冬至一定是在農歷十一月!
農歷的制定就以冬至為起始,冬至所在的那個農歷月被定為十一月,冬至是第一個“中氣”,理想情況下,不出現前面所述的沒有“中氣”的月的特殊情況,那我們就可以推出,十二月的“中氣”為大寒、一月的“中氣”為雨水。這樣,每個月份都與一個“中氣”對應:冬至(十一月)、大寒(十二月)、雨水(一月)、春分(二月)、谷雨(三月)、小滿(四月)、夏至(五月)、大暑(六月)、處暑(七月)、秋分(八月)、霜降(九月)、小雪(十月)。可是由于“中氣”的間隔比朔望月的周期稍長,根據“中氣”的間隔約為30.4天,一個朔望月約為29.5天可以算出,相差大約0.9天。歷法大部分時候能夠滿足每月有一個中氣的要求,可是這種誤差不斷積累,每隔兩到三年,難免會出現一個月沒有“中氣”,那這樣月份和“中氣”的對應關系不就破壞了嗎?為此,古人創造了設置閏月的方法,將這個沒有“中氣”的月定為閏月,在幾月后面就叫閏幾月,這樣一來,仍然可以保持月份與“中氣”的對應關系。這就是農歷編排中最重要的法則——“無中氣月即置閏”。它將“中氣”和月份建立起一一對應的關系,傳統農歷中,“中氣”必定在對應的月份,每個月必定包含對應的“中氣”。閏月的產生終于有了解釋:“中氣”和朔望,分別對應著太陽和月亮的運行,那么“閏月”的出現,是與太陽和月亮的運行緊密關聯的!
假如每兩個“中氣”的間隔完全相等,每個朔望月的長度也完全相等,我們可以計算,29.5/0.9≈32.8,也就是每隔32~33個月,即兩到三年,“閏月”就出現一次,這符合我們的認知,至于著名的“19年7閏”之說則也是通過更精確計算得出的結論。
我們都知道,從冬至到下一個冬至的一個周期是大約365天。在從兩次冬至之間的一個太陽年周期里,如果存在無“中氣”的月,這一個太陽年周期之中就包含閏月,我們把它稱為閏周期,這個太陽年周期之中有12個完整的朔望月周期,對應的農歷年很可能是閏年。不過,由于現代歷法中一年的開始是正月而不是十一月,假如某一年,閏月出現在十一月或十二月的后面,它仍屬于這一年,然而由于它已經在冬至之后,包含他的閏周期是下一年。農歷年的閏年,與兩次冬至之間的太陽年周期是否為閏周期出現了不對應的情況。這只是一個人為規定產生的問題,為什么這個問題很重要呢?因為這個問題后來引發了一些意想不到麻煩,筆者在后面還要介紹。除此之外,農歷閏月的產生,仍然是十分理想的將太陽和月亮的運行統合在一起的結果。
不過,要是閏月的產生真的按照我們前面計算出的規律,每隔32~33個月就有一個閏月,那么閏月出現在任何一個月之后的概率應該是一樣的呀,那為什么我們現在經常看到閏三月閏四月閏五月閏六月等等,卻從來沒見過“閏十二月”、“閏正月”呢?
中氣和朔望反映的是地球和月球軌道上的特殊點。了解這套系統,我們就可以從我們的歷法中輕易推斷出太陽、月亮和地球的相對位置。不過,以上我們的所有分析,都是在假定每兩個“中氣”的間隔完全相等,每個朔望月長度也完全相等的情況下做出的。古代的歷法也確實是這么做的。而事實上,地球和月球的軌道都并非完全理想的,地球和月球運行的速率并不均勻,而是有時快,有時慢,在軌道上特殊點之間運行的時間并非完全相等。因為古人沒有條件或能力去精確測定每一個“中氣”和朔望月的時間,采用的正是固定節氣和朔望月時長的做法,也就假設每個朔望月都等于朔望月的平均長度,稱為“平朔”;讓每個節氣的時長都等于一個太陽年的24分之一,是為“平氣”。采用了“平朔”和“平氣”的歷法,見到閏四閏五月閏六月,與見到“閏十二月”、“閏正月”的概率應該是一樣的。
要讓歷法更精確地反映太陽、月亮的實際運行,就需要去更精確地測定每一個“中氣”和朔望月的時間。可能有人會說,我們普通人知道太陽月亮的精確位置有什么用?像公歷一樣簡單的歷法完全夠用了。古人受技術所限,無法進行更精確地測量。但一旦技術進步,古人還是有對科學的一份執著。例如,“平氣”將一年的時間劃分為24等分,是按照時間定義節氣。如果我們回歸節氣的原始定義,就能明白它反映的是地球繞太陽公轉軌道上的位置,是由空間來定義的。既然節氣和朔望的原始定義都是空間的位置,所以一旦古代科學家了解了太陽和月亮運行的“真相”,就會有不斷的動力改進歷法,使它在反映太陽和月亮的位置方面更準確,精益求精。好在到隋唐時,已能精確測定每個朔望月的長度,在宋朝,歷法也用“定朔”取代了“平朔”,以每次月球繞地球真正運行到“朔”點的日子作為每個月的開始。
精確測量每個“中氣”的時間要難很多,古人一直沒有實現。采用“定朔”和“平氣”的歷法運行了很多年,平安無事。相比當時西方的天文學家發現公歷對太陽運動的描述不精確,從而修改了歷法,造成古代的日期都不能用現在的方法去推算了,古代中國這一套綜合了月球和太陽的運行制定的歷法,確實算是當時比較先進的天文學成果了。
二十四節氣與農歷有很重要的關系,還蘊含了更深刻天文學的規律。
近代以來,西方的科學技術發展逐漸超越了中國,也有很多西方人來到遙遠的東方古國與我們進行文明交流,傳教士就是其中的一批人,他們在傳教的同時,還把西方先進的科學技術一并帶到了我國,和我國古代的科技成就融合到一起。他們帶來了不少天文學的知識,大大豐富了當時中國人的眼界。在他們了解到了中國的農歷以后,就提出可以進行二十四節氣時間的精確測量,也就是“定氣”。“定氣”產生后,農歷的歷法經歷了一次重大的變革。
我們已經知道,二十四節氣將地球繞太陽公轉軌道劃分成了二十四等分,但地球在每一等分內運行的時間都是不同的,這是因為地球繞太陽軌道是橢圓軌道,開普勒第三定律告訴我們,地球在近日點附近運行快,在遠日點附近運行慢,也就造成了二十四節氣事實上在時間長度上的不等。近現代,地球的近日點出現在公歷年的12月末到1月初,也就是冬至、小寒節氣期間,而遠日點出現在6月末、7月初,也就是夏至、小暑節氣期間。所以,冬至附近的節氣時間長度明顯比夏至附近的節氣短。冬至附近的節氣短于15天,而夏至附近的節氣卻可長達將近16天。自然地,相鄰兩個“中氣”的間隔也是冬短、夏長。冬季兩個“中氣”間隔不足30天,而夏季多于30天。
回想前文中說,農歷中,沒有“中氣”的月就是閏月。朔望月的長度都是29.5天左右,朔望月之間長度的差異,比“中氣”的間隔在夏季和冬季之間的差異小得多(這可以從農歷采用“定朔”后,所有月份仍然不是二十九天就是三十天看出)。所以,在“定氣”的情況下,因為冬至前后“中氣”間隔較短,跟一個朔望月的長度差不多,不太容易出現沒有“中氣”的月;而夏至前后“中氣”間隔長,夏至前后的月份就相對更容易出現閏月 。
清朝時期,我們的歷法正式改用了“定朔”“定氣”的方法。“定朔”“定氣”的農歷,每個月份和節氣都精確反映了地球和月球在軌道上所處的位置,按道理說應該是更科學了。既然農歷的年月日是和太陽、月亮的運行規律“綁定”在一起的,那么在計算機的輔助下,能算出幾百年、幾千年后的農歷就一點兒也不奇怪了。可是萬萬沒想到,“定氣”帶來了新的麻煩。
“定氣”后,每個節氣長度不再是相等的了,這使得“中氣”與朔望月的時間差不再以恒定的速率累積,閏月出現的間隔不固定了。而且,更麻煩的是,相鄰“中氣”的間隔有時候比一個朔望月長,有時候卻比一個朔望月還短,這使得有的月份沒有“中氣”,有的月份卻有兩個“中氣”。以前的“平氣”農歷中,每個月份要么有一個中氣,要么沒有中氣,一般月份每個月都包含且僅包含對應的“中氣”,閏月沒有中氣,但“定氣”使得這一規律不再適用了。很明顯,在兩次冬至之間的一個太陽年周期中,“中氣”的個數為12個,而朔望月的起始——朔的個數可能是12個或13個。假如在兩次冬至之間的太陽年周期中有13個朔日,那么這個周期是閏周期,必定有一個月沒有“中氣”。但是,假如一個月有兩個“中氣”的情況發生了,情況變得復雜許多:首先,如果周期不是閏周期,而其中某月有兩個“中氣”,那必定有一個月沒有“中氣”;如果是閏周期,本來就該有一個無“中氣”的月,要是還有某月包含兩個“中氣”,那就還會有另外一個月沒有“中氣”。也就是說,非閏周期中也可能出現無“中氣”的月,而一個太陽年周期中可能包含了不止一個無“中氣”的月。而理論上,在一個太陽年周期中出現更多的雙中氣月和無中氣月都是有可能的。“無中氣月即置閏”的規則似乎行不通了,農歷歷法編排的原則受到了極大的沖擊和挑戰!
根據我們一般的認知,農歷平年有12個月,閏年有13個月,這樣才能保持跟太陽年的基本對應。所以就必須再制定一種規則,把閏月的數量控制在每個閏周期中有且只有一個,非閏周期中不能有閏月。由于農歷是從冬至起始,仍然規定冬至所在的月份為十一月。于是產生了采用“定氣”后農歷設置閏月的新規則:如果兩次冬至之間的一個太陽年周期中有12個朔日,則這個周期不是閏周期,不需置閏月,即使有無“中氣”的月也按照一般的月份對待,不需要置閏;如果兩次冬至之間的一個太陽年周期中有13個朔日,則這個太陽年周期是閏周期,無論其中有多少個無“中氣”的月,只選擇其中的第一個無“中氣”的月置閏月,而其余無“中氣”的月都按一般月份對待,給予月序。這是一種折衷的辦法,它保持了農歷年和太陽年的基本對應,但閏月和“無中氣月”不再是嚴格對應的關系,而除了冬至仍然固定在十一月外,其他“中氣”和農歷月份的一一對應關系也不再是篤定無疑,而是有可能出現例外情況。
有了這一規定,哪些月是閏月、哪些月不是閏月應該有章可循了。這也正是我們沿用至今的歷法。不過,在編排歷法的過程中,由于農歷年的起始點正月初一春節,和二十四節氣的基準——太陽年周期起始點——冬至之間的不一致,產生了一些歧義,如著名的2033年問題就是這樣的一個例子。
如果我們觀察2033年~2034年的日歷,能夠發現,從2033年冬至到2034年冬至的一年里有十三個朔日,應該是一個“閏周期”。這個“閏周期”又恰好包含了不止一個無“中氣”的月,第一個就是2033年農歷十一月之后的一個月,第二個是農歷2034年年中的某個月。根據“置閏規則”,顯然這個“閏周期”中的閏月應該是這個周期中第一個無“中氣”的月——2033年農歷十一月之后的這個月,為閏十一月,這樣實際上,農歷2033年為閏年。但有的人根據2033年冬至到2034年冬至的太陽年周期為閏周期,認為2034年為閏年,從而不認為2033年農歷十一月之后有閏月,而將農歷2034年年中第一個無“中氣”的月置為閏月。這造成了2034年的春節在哪一天有兩種版本,之間相差一個月。或許到了不久的將來的2034年,我們可能真要糾結春節什么時候過?這是由于“閏年”和“閏周期”不統一產生的歧義,但認真按照規則來求解,這個問題的正確答案還是非常簡單明確的。
“定氣”引進的新問題看起來讓農歷顯得不那么優美而自然了,在“平氣”農歷中,閏月和非閏月有著極其清晰的分別,閏月的出現極為規律,一般的月和“中氣”也是嚴格一一對應的。所以有的人也主張為了消除可能的問題,應該恢復采用“定朔”、“平氣”的農歷。但大自然的真實狀態并不總是整齊劃一的,這種看上去的混亂,更貼近于大自然的真實狀態,不規則的自然也是一種美。如果能在采用“定氣”的同時,更大限度地保持規律性是最好的,不知道我們后來的人有這樣的智慧嗎?
在了解了農歷編排的法則之后,我們能計算出春節的日期會出現在什么范圍內。我們已知春節是農歷正月初一,冬至一定在農歷十一月。冬至總是在公歷的12月21日至23日之間。那么理論上的最早春節,就是當冬至在12月21日,而12月21日恰好是農歷十一月的最后一天,且農歷十一月、十二月之后都沒有閏月,這樣12月22日是農歷十二月初一,而且我們希望農歷十二月是小月,只有29天,這時我們可以得出正月初一也就是春節會在1月20日。而理論上的最晚春節,則是當冬至在12月23日,而且12月23日恰好是農歷十一月初一,農歷十一月、十二月都是大月有30天,這樣1月22日是農歷十二月初一,2月21日就是正月初一春節。有沒有可能十一月、十二月之后還出現閏月呢?十一月、十二月出現閏月,確實是有可能的。不過實際上,倘若冬至剛好是十一月初一,這個太陽年周期是不可能為閏周期的,也就不可能有閏月,所以,春節最晚確實只能是2月21日了。
我們的古人在長期觀察和實踐中,將自己能觀測到的全部天文現象,也就是太陽和月亮的運行規律,濃縮在了一部厚重的農歷之中。農歷雖名為“農”,可絕不僅限于農業生產,它其中蘊含著多么豐富的天文規律!