星期幾計算機之所以是精確而非估算,是因為它把輸入日期錨定在 UTC 日曆時點,並用蔡勒公式交叉核對星期幾——這套經典公式對逆推格里曆中的每一個日期都會回傳同一個答案。Day of the Week Calculator 正是採取這個做法:它直接從日曆讀出星期幾,再對照公式驗證,讓兩種獨立方法在每個日期上都一致。這層雙重核對,正是真正準確的計算機,與那種在閏年、世紀交界或遙遠未來日期上會悄悄漂移的快速查表之間的差別。參考時點可以印證:2000 年一月 1 日是星期六,1970 年一月 1 日(Unix epoch)是星期四,而 1969 年七月 20 日——Apollo 11 登月那天——是星期日。因為一選好日期答案就出現——不必按任何按鈕——而且完全在瀏覽器裡執行,結果是即時、可重現的,也絕不會被送到伺服器。

當關鍵字「準確」真正要緊時,顧慮通常是三件事之一:1800 年代或 1900 年代的歷史日期、像棘手世紀裡的 二月 29 日這類邊界情況,或是數年乃至數十年後的未來日期。這些情境每一種都會揭穿脆弱的實作——搞錯世紀規則的腳本、把本該是 2050 的年份讀成 1950 的兩位數年份錯誤,或是在錯誤時點悄悄從儒略曆切到格里曆的日曆函式庫。這裡介紹的工具靠完整的逆推格里曆、完整閏年規則,以及忽略本地時區與日光節約時間的 UTC 錨點,避開了這三者。

day of the week calculator accurate
準確的星期幾計算機

如何使用 Day of the Week Calculator

  1. 在日期欄位挑選任意日期。該欄位預設為今天,你可以不受限制地往回走到歷史深處,或往前走到未來。
  2. 一選好日期就讀取星期幾。答案——星期一、星期二、星期三、星期四、星期五、星期六或星期日——直接出現在欄位下方,不必按任何按鈕。
  3. 核對星期幾旁邊顯示的額外細節:所選日期距今天的天數、它落在過去還是未來,以及是否落在星期六或星期日。
  4. 若需要儲存或分享,把星期幾與完整寫出的日期複製到筆記、日曆項目或訊息裡。
  5. 隨時再挑另一個日期。此工具支援無限次查詢、不必註冊,每次新選取都會立刻重新整理結果。

Day of the Week Calculator 準確的原因

星期幾工具的準確度取決於三項工程選擇:它使用的日曆、套用的閏年規則,以及是否交叉驗證結果。

逆推格里曆把現代格里規則往回延伸到歷史、往前延伸到未來,而不是混入較舊的儒略規則。因為格里曆是全球排程、契約與出生紀錄使用的民用標準,把每個輸入錨定在這套日曆上,就能避開那些中途切換日曆的工具會出現的一天或兩天誤差。

套用的是完整格里閏年規則:能被 4 整除的年份是閏年,但世紀年還必須能被 400 整除。正是這條單一規則讓 2024 成為閏年(因此 2024 年二月 29 日是星期四)、2000 成為閏年(能被 400 整除),以及 1900 與 2100 成為平年(能被 100 整除但不能被 400 整除)。丟掉「能被 400 整除」這條款的工具,會悄悄把 2100 分錯類,並對該年任何二月或三月日期產出錯誤的星期幾。

交叉驗證是最後一層。計算機直接從日期讀出星期幾,再對同一輸入跑蔡勒公式——一套 1882 年發表、由年、月、日算出星期幾的公式。因為這兩種方法彼此獨立,兩者一致就是結果正確的有力證據。若它們曾經分歧,那就是錯誤,而不是決勝條件。

印證結果的參考日期

三個參考日期充當獨立檢查點。每一個都有廣泛記載,因此這裡答對就是實作跨越數世紀都可靠的有力證據。

參考日期意義星期幾
2000 年一月 1 日Y2K 里程碑與千禧年交替星期六
1970 年一月 1 日Unix epoch(時間戳零)星期四
1969 年七月 20 日Apollo 11 登月星期日
2024 年二月 29 日近期閏日星期四
1900 年二月 29 日格里曆中不存在的日期不是有效日期

最後一列很重要。1900 年二月 29 日從來不是真實日期,因為依格里規則 1900 不是閏年。對 1900 年二月 29 日回傳「星期一」或任何其他星期幾的計算機,就是在某處套用了錯誤規則——通常是忽略世紀例外、簡化成「能被 4 整除」的檢查。Day of the Week Calculator 套用完整格里規則,因此 1900 被正確歸類為平年,1900 年二月 29 日不是它會解析的日期。

演算範例:用蔡勒公式計算 2000 年一月 1 日

蔡勒公式由年、月、日計算星期幾。對一月與二月,公式把該月當成前一年的第 13 或 14 月,因此 2000 年一月 1 日被當成 1999 年的第 13 月。

公式為:

h = (q + ⌊13(m + 1)/5⌋ + K + ⌊K/4⌋ + ⌊J/4⌋ − 2J) mod 7

其中 q 是該月的日,m 是偏移後的月(3 = 三月,…,14 = 二月),K 是世紀內年份(year mod 100),J 是從零起算的世紀(year ÷ 100,向下取整)。對 2000 年一月 1 日:q = 1, m = 13, K = 99, J = 19。

代入這些數字:

h = (1 + ⌊13 × 14 / 5⌋ + 99 + ⌊99/4⌋ + ⌊19/4⌋ − 2 × 19) mod 7

= (1 + ⌊182/5⌋ + 99 + 24 + 4 − 38) mod 7

= (1 + 36 + 99 + 24 + 4 − 38) mod 7

= 126 mod 7

= 0

結果為 0 在蔡勒輸出對應中代表星期六,與 2000 年一月 1 日有記載的星期幾相符。Day of the Week Calculator 透過直接讀日曆回傳同一個答案,因此兩種方法在這個參考時點上一致。

閏年與世紀交界如何處理

多數錯誤的星期幾結果來自閏年失誤,而不是星期幾算術本身有問題。完整格里規則必須全套套用:

  • 能被 4 整除的年份是閏年。
  • 能被 100 整除則不是閏年。
  • 若也能被 400 整除,則又是閏年。

隨之而來有三項後果。第一,2024 年二月 29 日是真實日期,且落在星期四——值得記住的近期例子。第二,2000 是閏年,因為能被 400 整除,因此 2000 年 二月 29 日存在,而且是星期二。第三,1900 與 2100 不是閏年,因此 1900 年二月 29 日與 2100 年二月 29 日是無效日期,計算機應拒絕它們而不是猜測。

此工具也防禦較舊腳本裡的常見錯誤:把年份 50 變成 1950、但其實本意是 2050 的兩位數年份歧義。任何解析成遠超出使用者實際意圖範圍的日期,都會為那個錯誤年份回傳星期幾,然後看起來自信卻不正確。把輸入釘在完整指定的年份,就是簡單的防護,而計算機也防禦影響較舊腳本的常見兩位數年份歧義。

準確的星期幾結果最要緊的地方

準確度問題會出現在一天誤差就有可見後果的真實情境。下表把常見用途對應到不準確工具會造成的那種錯誤。

情境不準確的答案會造成什麼
查父母或祖父母的生日家族故事會記錯那天,任何「星期二出生」的傳統也會斷掉。
把婚禮、派對或旅行排在特定星期幾場地、廠商與賓客日曆會差一天。
核對發票、證書或法律文件上印出的日期有爭議的紀錄會看起來與所載那天不一致。
檢查截止日或到期日是否落在週末打算在「最後一個工作日」提交的計畫會差一天。
了結一場歷史賭約(「登月是星期幾?」)所引的星期幾與記載完備的紀錄不符。

當你需要對日期加減時間、而不是讀它的星期幾時,日期加減計算機 處理以日、週、月或年為單位的往前與往後移動。下一步若是計算兩個日期之間有多少天——包括週末處理——專用的日期差工具是更乾淨的選擇。若要從試算表這一側補充閱讀這個問題,見 如何在 Excel 計算兩個日期之間的工作日; Excel 的 WEEKDAY 函式使用同一類日曆錨點,並在設對回傳類型時給出可比較的結果。

相關閱讀:如何計算任何一年的日序數.