# 寻找公历农历相同的日子

- URL: https://wuming.si/blog/453/
- Author: Aaron
- Published: 2014-01-03
- Language: zh-Hans
- Categories: Miscellaneous
- Originally published at: https://blog.wo.ai/archives/453

今年大家都在热炒1986年的公历和今年的一样，但是农历却不一样。因为公历每四年闰一天，每周有七天，所以大概是28年同一次，农历是19年同一次（解释在下面），理论上农历和西历要完全相同，大概需要19*28=532年。理论上公元1482年的西历和农历都和今年相同。实际上28年重复一次，也不是靠谱的，因为每年的日子实际上是个小数，公历四年一闰，但是百年反而不一定闰了，规则是如果年份可以被100除尽，还需要被400除尽才闰，这样导致公历也会相差，比如1902，1930，1958，1986，2014这几年日历相同，因为1900年不是闰年，导致1874年比2014年的元旦晚了一天。所以翻遍万年历，几乎不可能找到农历公历完全相同的日子。

2014/1/1 周三，农历十二月初一

1482/1/1 周四，农历十二月初三

950/1/1周四，农历十二月初四

418/1/1周一，农历十二月初八

另外，澄清一点，公历或者西历是太阳历，所以可以称作阳历，而农历不但根据月亮公转地球的周期，还要计算地球公转太阳的周期，所以准确的说，应该是阴阳历，所以大众普遍说的阴历其实是不准确的。

下面是解释为什么农历中十九年七闰及公历四年一闰的原因：

转载自

<http://destiny.xfiles.to/ubbthreads/ubbthreads.php/topics/610122>

除了你出生的那一年之外，大家有沒有遇過你西曆生辰的那一天又是你的農曆生辰呢？未遇過？這不出奇。因為根據曆法，西曆和農曆每隔 19 年才循環一次，如果你的年齡未滿 19 歲，自然不會遇上西曆生辰和農曆生辰在同一天出現的情況了。

可能大家會懷疑，為甚麼一定要等 19 年，西曆和農曆才會循環一次呢？為了明白 19 年循環的奧秘，我們先就要明瞭倒底「西曆」和「農曆」是怎樣制定出來的。首先，讓我們看看「西曆」：

我們現時所採用的「西曆」，顧名思義，就是一套從西方傳入的曆法系統。遠在古羅馬（甚至是更早的）時期，當時的歐洲人就已經將地球環繞太陽公轉一周所需的時間定為「一年」。通常我們都說 1 年有 365 日，即是說地球自轉了 365 次（日），它就會環繞太陽公轉 1 次（年）。如果地球自轉和公轉之比，剛好是一個整數，那麼一切就好辦了，但很可惜，經過仔細的天文觀測後發現，地球環繞太陽公轉所需的準確時間應為 365 日 5 小時 48 分 46 秒，即約 365.2422 日。故此，1 年有 365 日的想法，和地球公轉所需的時間，實際上有 0.2422 日的差別。

相信大家都知道，我們每隔 4 年就會在第 4 年中增加一日（即該年的 2 月 29 日），目的就是為了彌補上述的差別。注意：0.2422 ´ 4 = 0.9688，而 1 – 0.9688 = 0.0312 日，即約等於 44 分 56 秒。換句話說，使用了「四年一閏」的曆法，我們每隔 4 年就可以將上述的差別減少至 4 年才相差 44 分 56 秒，相信這是一個很合理的處理辦法了。

由於「西曆」是按照太陽和地球的關係而制定出來的，故此亦有人將「西曆」稱為「陽曆」。而為了方便後面的討論，我將地球公轉所需的時間（即 365.2422 日）稱為 1 個「太陽年」。

「農曆」就比較麻煩。有人稱「農曆」為「陰曆」，這是因為「農曆」主要是根據月球環繞地球公轉所需的時間而制定出來的。同樣，據觀測，月球環繞地球公轉一周所需的時間亦不是一個整數，而是等於 29 日 12 小時 44 分 2.8 秒，即約 29.5306 日。故此，在農曆裏面，1 個月有時會有 29 日，有時又會有 30 日。這要看每次月缺和月圓的時間才可定出一個月到底有多少日。通常，我們會將月圓的那一天定為每個月的第 15 日。同樣，為了方便後面的討論，我將月球環繞地球公轉所需的時間（即 29.5306 日）稱為 1 個「太陰月」。

將 1 個太陽年和 1 個太陰月相除，得 365.2422 ¸ 29.5306 = 12.368262，由此可知 1 個太陽年比 12 個太陰月多出 0.368262 個太陰月，約 10 日 21 小時。在這裏，問題來了：如果我們將 1 個農曆年定為 12 個月，那麼每過 1 年，我們就要提早差不多 11 日過新年了！這樣做，會令到我們使用農曆時出現很多混亂和困難的情況。例如：農夫發覺今年農曆 3 月 1 日天氣回暖，春天到了，適合播種，那麼到了第二年就要改於 3 月 12 日播種，第三年就要改於 3 月 23 日，如此類推。十年後就要在 7 月才開始耕種，二十年後就要到 11 月了！

為了解決上述的困難，農曆的曆法亦好像西曆「四年一閏」的制度一樣，在適當的時候就會在某一年之中加插多一個月（即閏月）來調節上述的差距。至於哪一年需要多加一個閏月，它的推算方法亦十分簡單，就是直接將每年多出來的時間（即 0.368262 個太陰月）累積地加起來，如果剛好超過 1 個太陰月，就可以在該年加插一個閏月了。

例如：第 1 年多了 0.368262 個太陰月，第 2 年就會多 0.736524 個太陰月，第 3 年將會多出 1.104786 個太陰月。這時剛好多於1個太陰月，所以我們就在第 3 年中加添一個閏月，因而得到農曆「三年一閏月」的規律。

但「三年一閏月」這個方法並不完美，原因是即使增加了 1 個閏月，3 年後仍和實際的太陽年相差了 0.104786 個太陰月，約 3 日 2 小時。這個差距依然很大。為了建造一個更好的曆法，我們可以繼續算下去，從而得到下表：

年數 累積差額（個太陰月）  
3 1.104786  
6 2.209572  
8 2.946096  
11 4.050882  
14 5.155668  
16 5.892192  
19 6.996978

這樣，我們就計算出農曆年和太陽年之間一個更準確的關係了。從上表可以見到，當過了 8 年後，雖然差額祇有 2.946096 個太陰月，仍未足 3 個太陰月，但這個數字卻和 3 非常接近，故此，在農曆的曆法中，亦有「八年三閏月」的規定，即除了在第 3 和第 6 年分別插入 1 個閏月外，亦在第 8 年再加插多 1 個閏月。這時候，我們祇是隔了一年，就已經有多 1 個閏年了。類似地，到了第 16 年，就應該有 6 個閏月了。

注意：按「八年三閏月」的規定推算，8 年後太陽年和農曆年應該相差了 3 – 2.946096 = 0.053904 個太陰月，即約 1 日 14 小時。亦即是說，經過 8 年後，農曆年和太陽年其實祇有一至兩天的差距。大家是否記得你們 8 歲的那一年，你們的西曆生辰祇比農曆生辰早了 1 天或 2 天到臨呢？看過以上的計算，大家就應該明白，這個現象是基於甚麼原因而造成的了。

但一個更準確的結果，應該出現在第 19 年了。如果我們定「19 年 7 閏月」，那麼太陽年和農曆年就祇相差 7 – 6.996978 = 0.003022 個太陰月，即約祇有 2 小時！試想想：在長長 19 年的歲月中，若依照「19 年 7 閏月」的方法，最後兩種曆法其實祇相差 2 小時，這是一個多麼精確的結果！因此，每逢 19 或 19 倍歲數生辰的時候，西曆生辰和農曆生辰就有機會在同一天出現了。

例如：2003 年的 2 月 1 日是農曆年的正月初一。19 年後，即 2022 年的 2 月 1 日那天亦剛好是農曆正月初一！換句話說，在 2003 年 2 月 1 日出生的人，到了 2022 年 19 歲生辰那天，就會同日慶祝兩個曆法上的生辰了。（大家不妨查一查，你們 19 歲的那一年，西曆生辰和農曆生辰又是否重疊在同一天呢？）不過，如果我們倒數 19 年卻發現，1984 年的正月初一卻在 2 月 2 日，而並非 2 月 1 日！這又是甚麼原因呢？

其實理由也很簡單，這是因為「太陽年」和「太陰月」的日數都不是整數，而我們實際使用的西曆和農曆，每一年和每一個月的日數都必須是整數的。例如：西曆每逢第 4 年就會多加一日，而農曆的月份亦有長有短，有時會有 29 日，有時又會有 30 日，所以會令到部分的日子會有些微的出入，亦引致有些人即使他們到了 19 歲時，西曆生辰和農曆生辰仍然會有一天的差距。

例如：2000 年的 2 月 29 日是農曆的正月 25 日，3 月 1 日是正月 26 日。19 年後，即 2019 年，該年根本不是閏年，該年沒有 2 月 29 日，而該年的 3 月 1 日則變成農曆的正月 25 日。所以在 2000 年那幾天出生的人，到了 19 歲，亦沒有機會在同一天慶祝兩個生辰了。

就以我本人而言，在我 19 歲的那一年，農曆生辰比西曆生辰早了一天出現，即使到了 38 或 57 歲，這兩個生辰亦不會重疊在一起。這的確是一件令我感到遺憾的事情！

=======================

我测试了一下，如果说某年正好是西历的闰年，之后的的日子就被打乱了，西、农历会相差一天。
