中國生肖按年排列是一個重複 12 年的文化曆法,可將 1900 到 2100 之間的任何西曆年份對應到 12 種動物之一,其順序固定為:鼠、牛、虎、兔、龍、蛇、馬、羊、猴、雞、狗、豬。中國生肖計算機以 2020 年對應鼠年為基準,然後每往後一個西曆年便前進一種動物,循環到豬年之後再回到鼠年,同時顯示前一種動物,使農曆新年的浮動邊界永遠不會被隱藏。這種雙重輸出正是此工具的決定性特徵:一個年份輸入,兩種動物輸出。由於生肖年是從農曆新年開始計算,而非從 1 月 1 日開始,因此在 1 月或 2 月初出生的人在技術上可能屬於前一個生肖,而結果中的第二行正是用來標示這個限制。所有的輸入都不會離開瀏覽器,所輸入的年份也不會被上傳或儲存。

chinese zodiac by year on laptop
中國生肖計算機:一個年份,兩種動物

「一個年份,兩種動物」真正的意涵

「一個年份,兩種動物」這句話並非行銷話術。它就是結果的真實形貌。第一種動物是位於你所輸入年份的循環位置上的動物。第二種動物是在同一 12 名稱序列中緊接在前一個位置的動物。兩者皆取自同一份來源表格,使用同一套可處理循環的模數運算;第二個只是前一個索引而已。

之所以會形成這樣的結果,是因為僅憑一個西曆年份無法完整確定生肖。生肖年是陰陽合曆的年份,會在西曆年中漂移,因此曆法的邊界並不一致。透過同時顯示前一個動物與當前動物,計算機把這個限制攤開來,而不是悄悄選一個、可能選錯。特別是 1 月或 2 月初的生日,可能落在該邊界的任一側,具體取決於該年農曆新年的確切西曆日期;計算機會把兩個候選結果一併交給讀者,讓讀者只要快速查閱一個有持續維護的中國曆法來源,就能選到正確的那一個。

換句話說,這兩種動物不是兩組預測。它們是一個循環位置,加上承認前一個循環位置也是一個合理的候選。預期讀者會根據實際的出生月份與日期,從中選出正確的那一個,而這正是農曆新年提醒請讀者做的事。

計算機接受與拒絕的輸入

計算機的輸入規則很窄,而且是刻意嚴格執行。年份欄位接受未去前後空白、以阿拉伯數字書寫的完整十進位西曆年份。可接受的範圍是 1900 到 2100,這是產品邊界,並不代表 12 年的數學循環從 1900 開始或到 2100 為止。在該範圍內,欄位接受任何符合條件的非負整數;超出範圍時,計算會直接失敗,而不是悄悄被截斷或平移。

此欄位也會拒絕任何不是純整數的輸入。字母、符號、空格、小數點、指數記法(例如 1.99e3 或類似寫法)以及空白的輸入,都會導致計算失敗,而不是被自動去除或四捨五入。沒有模糊輸入、沒有自動前綴、也沒有部分年份的轉換。這種嚴格性正是為什麼這個工具可以放心地每次只回傳一個有來源的循環位置:它永遠不必去猜測使用者的意思。這套獨立的測試資料能抓出動物順序意外被調換、基準年份錯誤,或是負數模數的退化,這也是為什麼事實來源如此精簡。

結果背後的運算

在一次按鈕點擊背後,三個小步驟決定了螢幕上顯示的內容。第一,計算機把約定的序列以恰好 12 個不重複的英文動物名稱,依文件記載的順序儲存起來。第二,它將基準年份 2020 從輸入年份中減去,計算出一個 12 的非負餘數,並以此作為循環索引。第三,它以同樣可處理循環的索引方式往回取一個位置,來取得前一種動物。兩個索引都從同一張固定的表格取值,因此當前與前一動物的關係永遠是可預期的。

12 個黃金案例測試涵蓋了從 2020 到 2031 的每一種動物,因此每個循環位置至少都附帶一個經過驗證的外部年份。額外的測試涵蓋了更早的循環、更晚的循環、輸入邊界、表格的唯一性,以及模數的循環行為。如果動物表格曾經被重新排序、基準年份發生偏移,或是可處理循環的邏輯退化成負數模數,這些測試至少會有一個失敗。這就是一個文化曆法的查詢工具,能在不必引入任何未經稽核的多世紀節日日期資料的情況下,被拉到軟體工程的標準來檢驗。

12 種動物的約定順序

計算機所對應的循環,與中國駐德班總領事館以及大都會藝術博物館在其「鼠年」展覽中所描述的循環相同;後者獨立指出 2020 年 1 月 25 日開始的農曆新年為鼠年。從鼠開始的完整序列如下所示。

循環索引動物翻譯說明
0Rat對應 2020
1Ox
2Tiger
3Rabbit部分地區的變體在此第四個位置改用 Cat
4Dragon
5Snake
6Horse
7Goat可靠的英文來源也可能把第八個動物寫成 Ram 或 Sheep 羊
8Monkey
9Rooster
10Dog
11Pig在索引 0 循環回 Rat

第八個動物的英文名稱在不同翻譯中有所不同;本工具使用 Goat,因為這是其引用來源所記載的選擇,但 Ram 與 Sheep 指的都是循環中的同一個第八個位置,並不會改變模數運算的結果。若讀者在其他頁面上看到不同的名稱,看到的也是同一個循環位置,而非不同的動物。關於 Rabbit 的說明存在,是因為某些遵循相關陰陽合曆的文化會以另一種動物(例如以 Cat 取代 Rabbit)來替換;本頁呈現的是其引用來源所記載的約定中國序列,並未宣稱可以計算越南、藏、日本或其他地區性的生肖變體。

實際演算範例:逐步對應 1991 年

為了看出一個年份、兩種動物的結果是如何產生、而不需要寫任何程式,可以挑一個像 1991 年這樣的單一年份走一遍。計算機套用的是其在內部文件中記載的同一套公式,以 2020 為基準。

  1. 從輸入年份中減去基準年份:1991 − 2020 = −29。
  2. 對該差值取 12 的可循環模數:−29 mod 12 = 7(因為 −29 = −3 × 12 + 7,得到一個非負餘數)。
  3. 將得出的索引對應到上方表格的約定序列中:索引 7 是 Goat。
  4. 以同樣可循環的方式往回取一個位置,得到前一種動物:索引 6 是 Horse。

因此 1991 年的查詢結果,當前動物是 Goat,前一動物是 Horse。同樣的算術對於任何其他可接受的年份反向運算也成立。想要看更易讀的 1991 年說明的讀者,也可以查閱專屬的1991 年查詢指南。改用 1990 年來試,當前動物與前一動物會恰好在相同順序中各往後位移一個位置,因為模 12 每 12 年重複一次,且循環行為完全相同。

農曆新年提醒詳解

僅憑一個西曆年份無法給出完整且日期準確的中國生肖,因為生肖年是從農曆新年開始計算,而非從 1 月 1 日開始,而農曆新年在西曆中的日期每年都不同。2020 年的農曆新年落在 1 月 25 日,這也是為什麼計算機將 Rat 對應到 2020;在其他年份,該邊界可能落在 1 月下旬或 2 月中下旬。正因如此,計算機總會同時顯示前一動物與當前動物:前一動物涵蓋落在輸入年份農曆新年之前的西曆日期出生的情況,當前動物則涵蓋從農曆新年起的西曆日期出生的情況。

對大多數讀者而言,只看年份就夠了——人們所認同的生肖通常是依出生年份而定,而非精確到日期。這個提醒對 1 月與 2 月初出生的情況特別重要,因為在這種情況下,西曆已經進入新的一年,但生肖年尚未進入。若日期是關鍵因素,讀者應查閱一個有持續維護的中國曆法來源,以取得相關年份的農曆新年確切日期,再從計算機的輸出中選擇當前或前一動物。這是一個刻意的設計選擇:工具把限制一開始就講清楚,而不是嵌入一張未經稽核的多世紀節日日期表。

計算機不做的事

有必要明確說明這個工具並不宣稱能提供什麼,因為讀者往往對生肖頁面抱持比文化曆法查詢實際所能提供的更高的期待。中國生肖計算機不會產生性格特質、配對分數、幸運顏色、陰陽分類、天干、地支、四柱圖、屬性預測或運勢預報。它不會嵌入未經稽核的多世紀農曆新年日期表,也不會從未被要求的月份與日期輸入去推算日期準確的生肖。它也刻意只限於約定的中國序列;並未宣稱可以計算越南、藏、日本或其他地區性的生肖變體——在那些變體中,第八動物或第四個位置可能有所不同。

輸入的年份完全在瀏覽器內部處理。不會上傳到伺服器、不會被儲存、也不會被分享。針對歷史研究、家譜工作、法律紀錄,或完整的傳統曆法實作,工具說明會引導讀者參考具備處理當地時間、曆法歷史變動與完整干支循環能力的合格曆法來源,而不是只依賴一個僅以年份為依據的查詢。關於特質或配對的傳統信念屬於文化框架,並非科學量測,不應被用來做醫療、財務、法律、僱用、感情或其他具重大後果的決定。

生肖循環的由來

這個重複 12 年的循環並非為計算工具而發明,而是源自文化與博物館權威單位。中國駐德班總領事館以英文發布了傳統的春節生肖順序,大都會藝術博物館的鼠年展覽也獨立指出 2020 年 1 月 25 日開始的農曆新年為鼠年。兩處資料來源確認了計算工具所採用的同一組重複 12 年順序,而上海市政府對生肖的摘要則以普通話提供了額外佐證,確認同一組 12 個位置亦使用於中國大陸的文化參考資料中。工具驗證套件中的 12 個外部黃金案例測試涵蓋了 2020 年至 2031 年的所有生肖,並另有測試涵蓋更早與更晚的循環、輸入邊界、唯一性與模數循環,因此生肖表的意外重排或錯誤的基準年份都會在上線前於測試套件中被攔截。以上即為完整的出處脈絡:一個瀏覽器端的公式、一份文化曆法對照,以及一則關於農曆新年分界的明確說明。

若您正在比較選擇,猴年生肖配對:配對地圖對此有詳細介紹。