文章
ISO週數是怎麼算的
在歐洲不少地方,一場會議可以被排在「第27週」而不附帶任何具體日期。把這個問題分別拿去問一張試算表、一款美式行事曆應用程式和一本德國紙本行事曆,得到的答案可能相差一週,有時甚至兩週。週數編號從來不是單一慣例,而是好幾種並存,ISO 8601定義的是其中不含歧義的那一種:一週從星期一開始,第1週以1月的第一個星期四為錨點。這種精確性的代價是,第1週有可能從12月就開始,而有些年份會數到第53週。
兩條規則定義了ISO週
ISO 8601的一週從星期一開始,週內各天編號為1(星期一)到7(星期日)。某年的第1週,是包含1月第一個星期四的那一週,等價地說,也是包含1月4日的那一週。這裡有個值得記住的推論:第1週的七天裡至少有四天屬於新的一年,所以一週的多數天數決定了這一週要計入哪一年。完整寫出來,一個ISO週日期看起來像2026-W27-5:2026年、第27週、第5天,也就是星期五。不帶連字號的簡寫(2026W275)也存在,但排程表和專案計畫幾乎總是使用帶連字號的寫法。
週所屬年份不等於日曆年份
由於第1週以第一個星期四為錨點,12月末最多三天可能已經屬於下一年的第1週,而1月初最多三天可能仍屬於上一年的最後一週。眼前這個年份交界正好是活生生的例子:2025年12月29日星期一到2026年1月4日星期日構成同一個星期,即2026-W01,所以2025年12月29日、30日和31日在週數編號上都屬於2026年。這種分裂正是一類經典軟體錯誤的根源。日期格式化工具會區分日曆年(Java風格樣式中的yyyy)與以週為基準的年份(YYYY),誤用YYYY輸出的程式碼會在新年前後幾天顯示錯誤的年份。這一類錯誤曾在2014年底出現在Twitter的日期顯示上,而且每年12月都會在某處重新冒出來。

有些年份有53週
365天分成52週還多出一天,所以週數沒法固定在一個穩定的節奏上。按ISO規則,一個年份若從星期四開始就會有53週,若是閏年且從星期三開始也會有53週。這種情況每400年出現71次,大約每六年一次。2026年就是其中之一:它從星期四開始,所以從2026-W01一路排到2026-W53,最後一週從2026年12月28日星期一延伸到2027年1月3日星期日。上一個53週年份是2020年;接下來的是2032年和2037年。負責薪資與零售排程的人對這些年份很熟悉,因為多出來的一個編號週,可能意味著在假設只有52週的預算裡多一次發薪或多一個報告期。

其他系統的算法不一樣
ISO 8601並不是唯一在用的慣例。北美的行事曆通常把一週的起點定在星期日,並把包含1月1日的那一週稱為第1週,不管1月1日是星期幾;這樣一來第一週可能只有一天長。試算表把這兩個世界都攤在眼前:Excel的WEEKNUM函數預設使用以星期日為基準的計數方式,而ISOWEEKNUM實作的是ISO規則,兩者在許多日期上的結果並不一致。程式語言也把同樣的陷阱藏在一個函數裡:光是strftime就提供了%U(以星期日為基準)、%W(以星期一為基準)和%V(ISO)三種。所以「第27週」這個說法本身並不精確,除非你知道它出自哪一種方案。只要週數會跨越國界、公司或程式碼庫,就應該明確寫出ISO,或是附上具體的日期範圍。
不用掛曆也能查到週數
對於重要的日期,計算比在日曆上數格子更可靠。我們的週數工具會為任意日期回傳ISO週數,並給出它所涵蓋的星期一到星期日範圍;星期幾工具會告訴你任意日期(無論過去還是未來)落在ISO七天中的哪一天。兩者都完全在你的瀏覽器裡運作:你輸入的日期只在你的裝置上處理,不會傳送到任何地方。如果你需要兩個便於記憶的錨點,這就夠了:1月4日永遠在第1週裡,12月28日永遠在當年的最後一週裡。
本文涉及的工具
常見問題
為什麼Excel和我的行事曆應用程式顯示的週數不一樣?
幾乎可以肯定是兩者用了不同的慣例。Excel的WEEKNUM預設使用以星期日起始的計數方式,包含1月1日的那一週就是第1週;而ISOWEEKNUM,以及大多數歐洲紙本行事曆和設定為ISO模式的行事曆應用程式,用的是以第一個星期四為錨點的星期一起始規則。全年結果都可能相差一週,而在新年前後,同一個日期在一個系統裡可能是第52週或第53週,在另一個系統裡卻是第1週。檢查一下每個應用程式裡的週數設定,當別人需要重現你給出的數字時,優先選擇ISO方案。
到底哪些國家真的在用週數?
在歐洲不少地方,週數是日常商務語言的一部分。德國和奧地利按Kalenderwoche(KW)做計畫,北歐國家、荷蘭和捷克也習慣用週數來安排會議、生產排程和交付;當地印刷的行事曆上標的就是ISO週數。在北美和亞洲大部分地區,週數在物流與製造業之外很少出現,即便出現,往往遵循的是以星期日為基準的計數方式。這就是為什麼「第34週交付」這種說法,最好還是附上明確的日期區間才穩妥。
會有第54週嗎?
在ISO 8601裡不會:一個ISO年份恰好是52週或53週,而且始終是完整的星期一到星期日整週。在年份邊界處切分週的系統,數字可以更高。在以1月1日所在週為第1週的星期日起始計數法裡,一個從星期六開始的閏年會把366天攤到54個不完整的週裡:2000年就是這樣的例子,Excel的WEEKNUM對2000年12月31日回傳的結果是54,下一次出現在2028年。如果軟體某天給你顯示第54週,你看到的是這種慣例,而不是ISO。