伊斯蘭表格曆:只跟月亮走的 30 年 11 閏
想像一個曆法,新年可以落在盛夏,也可以落在隆冬——而且這不是出錯,是刻意的設計。伊斯蘭曆是世界主要曆法中罕見的純陰曆:它只跟著月亮走,完全不理會太陽,每年比西曆早約 11 天,大約 33 年就在四季之間繞行一整圈。這篇文章拆解它背後優雅的「30 年 11 閏」算術,也說明本站計算器如何實作與驗證這套曆法。
只跟月亮走:純陰曆是什麼
世界上大多數曆法都想辦法跟上太陽——格里曆(西曆)直接以太陽年為骨架,華人的農曆則靠閏月把陰曆「拉回」季節,屬於陰陽合曆。伊斯蘭曆選了第三條路,而且走得非常徹底:一年固定 12 個陰曆月,絕不插入閏月。12 個朔望月合計約 354.37 天,比太陽年短了將近 11 天,而伊斯蘭曆坦然接受這個差距,不做任何補償。
後果很直觀:所有月份都在季節之間緩慢漂移。齋戒月(Ramadan)可能在酷暑,十幾年後就落到寒冬;大約每 33 個伊斯蘭年(約 32 個西元年),同一個月份會在四季繞行一整圈回到原點。對高緯度地區的穆斯林來說,這意味著日出到日落的禁食時數會隨年代大幅變化——這是活生生的天文學。
這不是缺陷,而是明文的宗教選擇。《古蘭經》第九章宣告一年為十二個月,並譴責前伊斯蘭時期阿拉伯人的「納西」(nasīʾ)置閏習俗——當時部族靠加插閏月把朝聖月份釘在有利的季節,連帶操弄了禁戰月份。西元 632 年穆罕默德在辭朝演說中正式廢除置閏,從此月份與季節脫鉤,回歸單純的月亮節奏。
- 平年 354 天、閏年 355 天,一年固定 12 個月,月名與順序永不變動
- 每年比西曆提早約 10 到 12 天,平均約 11 天
- 約 33 個伊斯蘭年(約 32 個西元年)在四季繞行一圈
- 紀元為西元 622 年聖遷,今(西元 2026 年中起)為伊斯蘭曆 1448 年
聖遷紀元:一場行政改革催生的曆法
伊斯蘭曆以西元 622 年的「聖遷」(Hijra)為紀元——穆罕默德率信眾自麥加遷往麥地那,穆斯林社群自此成形。但有趣的是,這套紀年並不是當年就有的。頭十幾年,阿拉伯半島的文書仍用「某事件後第幾年」的方式記事,日期混亂到連官方信件都難以排序。
約西元 638 年(伊斯蘭曆 17 年),第二任哈里發歐麥爾(ʿUmar)為了解決行政困擾,召集商議建立統一紀年。據傳當時曾討論過以穆罕默德的出生、首次受啟或逝世為起點,最後選定聖遷——理由是它標誌著社群的建立,是最沒有爭議的公共事件。
還有一個常被誤解的細節:紀元起點不是聖遷發生的那一天(聖遷實際發生在該年 9 月前後),而是回推到那個陰曆年的元旦,也就是 1 月(Muharram)1 日,對應儒略曆 622 年 7 月 15 或 16 日。為什麼有兩個候選日?因為陰曆的一天從日落開始,新月出現的那個傍晚可以歸給前一天、也可以歸給後一天:天文學家傳統採 7 月 15 日(星期四,稱「天文紀元」),多數民用換算表採 7 月 16 日(星期五,稱「民用紀元」)。兩者恆差一天,本站計算器兩種都支援。
30 年 11 閏:一道優雅的算術題
真實的朔望月(從新月到下一次新月)平均約 29.530589 天。曆法只能用整數日,最自然的做法就是讓月份在 30 天與 29 天之間交替,平均每月 29.5 天,一年 12 個月共 354 天。但真實的陰曆年是 12 × 29.530589 ≈ 354.367 天——每年會多出約 0.367 天的零頭,放著不管,幾年之後月初就會脫離新月。
表格曆的解法漂亮得像數學習題:0.36707 非常接近 11/30 = 0.36667,所以每 30 年插入 11 個閏日,把零頭幾乎吃光。閏日固定加在第 12 個月(朝聖月)月底,使該月由 29 天變 30 天、全年 355 天。於是一個完整週期 = 19 個平年 × 354 天 + 11 個閏年 × 355 天 = 10,631 天,之後一切從頭重複——整套曆法就是這一條算式,不需要任何天文觀測,這也是「表格曆」(拿著一張表就能排出所有日期)名稱的由來。
哪 11 年當閏年?最通行的集合是 {2, 5, 7, 10, 13, 16, 18, 21, 24, 26, 29},相鄰間隔為 3、2、3、3、3、2、3、3、2、3 年——目標是把 11 個閏日在 30 年裡鋪得愈平均愈好,原理和電腦繪圖裡用像素畫斜線的演算法如出一轍。它甚至能壓縮成一行判斷式:第 H 年是閏年,若且唯若 (11H + 14) mod 30 < 11。
精度如何?表格曆的平均月長是 10,631 ÷ 360 ≈ 29.53056 天,與真實朔望月只差約十萬分之三天,累積約 2,500 年才偏離 1 天。以一條中世紀就定案、簡單到能心算的規則而言,這個成績相當驚人。
一個家族,八種版本:閏年集與紀元的變體
中世紀沒有標準化組織,各地天文學家各自編表,於是「哪 11 年置閏」流傳下來至少四種版本。差異都發生在少數相鄰年份的取捨上:例如第 15 或 16 年、第 7 或 8 年、第 18 或 19 年、第 26 或 27 年。上一節那個含第 16 年的集合在今日最通行,微軟 Windows 內建的伊斯蘭曆(俗稱 Kuwaiti algorithm)用的正是它;另一支含第 8、19、27 年的版本習稱法蒂瑪曆(Misri),在埃及一帶的文獻中常見。
這些變體各自出自誰手,文獻說法並不一致——有的歸給早期天文學家法扎里(al-Fazārī)或哈巴什(Ḥabash al-Ḥāsib),有的歸給帖木兒王朝的兀魯伯(Ulugh Beg)。我們查核後認為現有史料不足以斷定歸屬,所以本站不替變體掛名,只以類型呈現,把它們當成可選參數。
四種閏年集,乘上民用與天文兩種紀元,理論上共八種組合,同一個伊斯蘭曆日期換算成西曆最多可以差出兩三天。這正是研讀中世紀文獻時的實際痛點:一份手稿上的日期,換算時最好多試幾組參數,再用文中若有提到的星期幾交叉核對——星期幾不受這些版本差異影響,反而是最可靠的錨點。
表格曆 vs 實際觀月:為什麼會差一到三天
必須誠實說清楚:表格曆不是宗教實務使用的曆。傳統上,每個月的開始以日落後實際目視新月(hilāl)為準——看得見,新的月份就開始;看不見,就再等一天。天氣、地理位置與目擊標準的差異,使得直到今天,不同國家仍可能在不同日子開始齋戒月。
表格曆是用「平均的月亮」跑出來的算術理想值,和各地觀測或官方公告的日期通常相差 1 到 3 天。就連沙烏地阿拉伯行政上使用的烏姆古拉曆(Umm al-Qura)——它本身已經改用天文計算,以麥加當地的日月條件為判準——也經常和表格曆差上一天,而重要宗教月份最終仍以實際見月為準。
因此本站把這個計算器明確標示為「民用表格曆」:它適合歷史文獻換算、跨曆法對照,以及遊戲與敘事場景的日期推算;齋戒、開齋節、朝覲等宗教日期,請一律以當地宗教機構的公告為準。同理,史書換算出的西元日期先天就帶著正負一兩天的不確定性——這不是誰算錯,而是曆法本身的性質。
我們的計算器怎麼實作與驗證這個曆法
實作上,表格曆是所有古代曆法中最「純」的一種:零天文、全算術。把任一伊斯蘭曆日期換成「距紀元第幾天」只需四步——完整 30 年週期數 × 10,631 天,加上週期內已過年份的天數(依閏年集取 354 或 355),加上當年已過月份的天數(30、29 交替;閏年第 12 個月取 30),最後加上日。得到的天數接上儒略日(JDN)這條通用時間軸,就能與格里曆、儒略曆或本站任何其他曆法互轉;反向換算則是同一套邏輯倒著走。
前面提到的歷史分歧我們不迴避,而是參數化:四種閏年集 × 兩種紀元(民用/天文)全部做成可選選項,預設採最通行的民用版本(閏年集含第 16 年、紀元為儒略曆 622 年 7 月 16 日),並在介面上明確標示「民用表格曆」以及「與觀測型曆法可能相差 1 至 3 天」的提醒。
驗證走三道關卡。第一,錨點測試:伊斯蘭曆 1 年 1 月 1 日必須精確落在儒略曆 622 年 7 月 16 日(民用)或 15 日(天文),並比對文獻中已知的換算日期。第二,週期不變量:任何日期加 30 個伊斯蘭年,距紀元天數必須恰好增加 10,631 天,且對每一種變體都成立。第三,全域往返測試:長區間內逐日執行「伊斯蘭曆→西曆→伊斯蘭曆」必須完全復原,保證換算是嚴格一對一、沒有裂縫或重疊。
最後把誤差交代完整:表格曆相對真實月相的漂移約 2,500 年才累積 1 天,在本站涵蓋的歷史區間內遠小於一天,可以放心使用;真正需要留意的是它與觀測型曆法之間那 1 到 3 天的制度性差異——這一點我們選擇直接印在介面上,而不是藏在附註裡。
相關頁面
- 古代曆法計算器(互動工具)
- 古代曆法完全指南(總覽)
- 農民曆原理與換算全解:陰陽合曆、置閏規則與2033閏十一月
- 後漢四分曆完整解說:三國漢曆原理、西元換算與日食驗證
- 宣明曆與日本和曆:用了823年的唐朝曆法|原理、歷史與西曆換算
- 乾象曆與景初曆:三國正朔之爭與換算原理|古代曆法計算器
- 儒略曆與羅馬紀日:Kalends、Nones、Ides 原理與換算|古代曆法計算器
- 羅馬共和曆是什麼?祭司政治置閏與凱撒445天亂年全解說
- 希伯來曆原理與換算全解:完全演算法化的陰陽合曆
- 馬雅曆解說:長紀曆、卓爾金曆、哈布曆原理與西元換算
- 埃及曆與科普特曆換算指南:一年永遠 365 天、活了四千年的曆法
- 印度古曆換算指南:Kali Yuga 紀元、均值曆原理與閏月規則
- 干支與黃曆怎麼算?六十甲子換算原理與三千年紀日史全解析
常見問題
伊斯蘭曆年份怎麼換算成西元年?
速算公式:西元年 ≈ 伊斯蘭曆年 × 0.970224 + 621.57(因為伊斯蘭年比太陽年短)。例如 1448 × 0.970224 + 621.57 ≈ 2026.5,表示伊斯蘭曆 1448 年橫跨西元 2026 到 2027 年。反向速算則是:伊斯蘭曆年 ≈ (西元年 − 622) × 33 ÷ 32。要精確到「日」必須逐日推算 30 年週期,建議直接使用本站計算器,並留意伊斯蘭曆的一年幾乎總是橫跨兩個西元年份。
現在(西元 2026 年)是伊斯蘭曆幾年?
以民用表格曆計算,伊斯蘭曆 1448 年 1 月 1 日約在西元 2026 年 6 月 17 日。所以西元 2026 年上半年屬於伊斯蘭曆 1447 年,6 月中旬之後進入 1448 年;觀測型曆法的起始日可能相差一到兩天。
為什麼齋戒月每年都提早大約 11 天?
伊斯蘭曆一年只有約 354.37 天,比太陽年短約 11 天,又依教義不設閏月調整,所以包括齋戒月在內的所有月份,每年在西曆上都提早約 11 天,大約 33 年在四季之間繞行一整圈。同一個人一生中會在夏天與冬天各經歷好幾輪齋戒月,這是純陰曆的正常現象,不是換算錯誤。
表格曆算出來的日期,和清真寺或各國公告的一樣嗎?
不一定,通常可能相差 1 到 3 天。宗教實務上,每月起始以實際看見新月或各國官方判定為準(例如沙烏地阿拉伯的烏姆古拉曆),而表格曆是純算術的平均值。本站結果為「民用表格曆」,適合歷史換算與跨曆法對照;齋戒、開齋節、朝覲等宗教日期請以當地宗教機構公告為準。
聖遷(Hijra)紀元是什麼?為什麼從西元 622 年起算?
聖遷指西元 622 年穆罕默德自麥加遷往麥地那,被視為穆斯林社群成立的起點。不過曆法本身是約西元 638 年由第二任哈里發歐麥爾追認制定的,並把紀元回推到聖遷那個陰曆年的 1 月 1 日——即儒略曆 622 年 7 月 15 日(天文紀元)或 16 日(民用紀元),兩者恆差一天,本站計算器均可選用。