請選擇要查詢星期的日期(也可以用鍵盤直接輸入)。除了星期幾,也會同時算出這天是一年中的第幾天,以及這一年的第幾個星期幾。
這個頁面可以做什麼
- 只要輸入日期,馬上就知道那天是星期幾(西元 1 年到 9999 年)
- 同時也會顯示「這一天是一年中的第幾天」和「到 12 月 31 日還剩幾天」
- 也會顯示「這是這一年的第幾個星期幾」(例如一年 52 個星期六中的第 27 個)
- 出生那天、歷史事件發生的那天、未來的紀念日等,手邊沒有月曆可查的日期,都能用來查星期幾
- 用計算求出星期幾的原理(蔡勒公式)的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 的公式,也都整理在這個頁面
這個計算有什麼用?
自己或家人出生那天是星期幾,其實很多人都不知道。出生證明和戶口名簿上雖然有日期,卻不會寫星期幾。
泰國和緬甸有重視「出生那天星期幾」的文化(泰國每個星期幾都有代表的顏色和佛像),被外國朋友問到時來查的人也很多,是這個頁面最常見的用法。
1996 年 3 月 23 日(台灣首次總統直選)是星期六,1999 年 9 月 21 日(九二一大地震)是星期二,2007 年 1 月 5 日(台灣高鐵通車營運)是星期五。知道「那天是星期幾」,就能更具體地想像當時人們的一天(是上班日還是假日)。
不過,1582 年 10 月 14 日以前的西洋史料多以當時的儒略曆記錄,中國與台灣的古文獻則多以農曆記日,可能和這個計算機的結果(往前套用格里曆的星期)不同。
事先查好結婚紀念日、公司創立紀念日、家人生日在明年、5 年後、10 年後是星期幾,就能做出「在剛好是星期六的那一年盛大慶祝」這樣的規劃。
婚宴會館和餐廳的預約與價格也會因星期幾而差很多,想知道遙遠未來某天是星期幾的情況,其實比想像中多。
銀行臨櫃和公家機關只在平日辦公,所以有時會想確認過去文件上的日期是平日還是週末,例如「這張收據的日期真的是營業日嗎?」
整理日記或家計簿、確認紀念的日子(第一次見面的那天、搬家的那天)是星期幾時也用得上。不過這個計算機不知道國定假日,判斷包含國定假日在內的營業日時,也請查看行事曆。
結婚、搬家、開幕時常會參考的「宜嫁娶」「宜入宅」等,是農民曆依農曆和干支決定的宜忌,和星期(星期一到星期日)是完全不同的系統。這個頁面算的只有星期,查不到農民曆的宜忌。
另一方面,婚宴會館的檔期與價格,實際上常常是看「週末還是平日」,挑好日子時,先查星期幾也很值得。
公式
符號與用語解說
符號
| \(h\) | h | 蔡勒公式的答案,也就是星期代號。對應方式是 0 = 星期六、1 = 星期日、2 = 星期一、…、6 = 星期五。 |
| \(q\) | q | 日(「7 月 4 日」中的 4)。蔡勒公式習慣用這個字母表示日。 |
| \(m\) | m | 月。不過 1 月和 2 月要當成「前一年的 13 月、14 月」,以 \(m = 13\)、\(m = 14\) 計算。是英文 month 的第一個字母。 |
| \(K\) | K(大寫) | 西元年份的末 2 位。2026 年就是 \(K = 26\)(請注意 1 月、2 月要當成前一年)。 |
| \(J\) | J(大寫) | 西元年份的前 2 位(世紀的部分)。2026 年就是 \(J = 20\)。 |
| \(\lfloor x \rfloor\) | floor x(地板函數) | 不超過 \(x\) 的最大整數。對 0 以上的數來說,和小數點以下無條件捨去相同,\(\lfloor 20.8 \rfloor = 20\)(這個公式中要捨去的數都在 0 以上)。台灣的高中也常寫成高斯符號 \([x]\)。 |
| \(\bmod\) | mod | 表示除法餘數的符號,用法如 \(21 \bmod 7 = 0\)(21 除以 7 的餘數是 0)。 |
| \(d\) | d | 一年中的第幾天,表示從那年的 1 月 1 日算起是第幾天。2026 年 7 月 4 日就是 \(d = 185\)。 |
| \(n\) | n | 表示這是這一年的第幾個同一星期幾的數。2026 年 7 月 4 日是這一年的第 27 個星期六。 |
用語
| 蔡勒公式 | 由日期直接算出星期幾的公式,由 19 世紀德國數學家克里斯蒂安‧蔡勒(Christian Zeller)提出。不必翻月曆,只用乘法和「除以 7 的餘數」就能求出星期幾。 |
| 格里曆 | 現在全世界通用的曆法,也就是一般說的公曆(西曆)。1582 年 10 月 15 日由羅馬教宗額我略十三世頒行。中華民國於 1912 年(民國元年)採用。 |
| 外推格里曆 | 把格里曆的規則,往前套用到頒行日(1582 年 10 月 15 日)之前的日期所得到的曆法,也稱為「前推格里曆」。國際標準 ISO 8601,以及包括這個計算機在內的許多電腦日期處理都採用它。和歷史上實際使用的曆法(儒略曆等)相比,日期或星期可能會有出入。 |
| 儒略曆 | 格里曆之前使用的曆法,由尤利烏斯‧凱撒於西元前 45 年制定。因為規定每 4 年一定有一個閏年,和實際的季節逐漸產生偏差,為了修正這個偏差,才改用格里曆。 |
| 閏年 | 有 2 月 29 日的年份(1 年 366 天)。原則上每 4 年一次,但能被 100 整除的年份是平年,能被 400 整除的年份才是閏年(2000 年是閏年,1900 年、2100 年是平年)。 |
| 一年中的第幾天 | 表示從那年的 1 月 1 日算起是第幾天的數(天文學上稱為「年積日」)。例如 3 月 1 日,平年是第 60 天,閏年是第 61 天。 |
| 星期的週期 | 星期每 7 天循環一次。相隔 7 的倍數天的兩個日期,一定是同一個星期幾。 |
| 農民曆 | 記載農曆日期、二十四節氣,以及每天「宜」「忌」的曆書。在台灣,結婚、搬家、開幕等常會翻農民曆挑日子。農民曆的宜忌是依農曆與干支決定的,和星期(星期一到星期日)是不同的系統。這個頁面算的是星期。 |
建議先了解的基礎知識
為了能「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
遇到不懂的地方時,回頭複習這張表的內容是最快的方法。
| 有餘數的除法(國小三年級,8~9 歲) |
|
| 日曆的規則(國小,約 7~10 歲) |
|
| 乘法與無條件捨去(國小三~五年級,8~11 歲) |
|
| 正數與負數(國中七年級,12~13 歲) |
|
用 Excel 計算的方法
| 要查詢的日期 | 2026/7/4 |
| 星期 | =TEXT(B1,"aaaa") |
| 要查詢的日期 | 2026/7/4 |
| 星期代號(1=星期日~7=星期六) | =WEEKDAY(B1) |
| 要查詢的日期 | 2026/7/4 |
| 一年中的第幾天 | =B1-DATE(YEAR(B1),1,1)+1 |
| 這一年的天數 | =DATE(YEAR(B1),12,31)-DATE(YEAR(B1),1,1)+1 |
| 剩餘天數 | =B3-B2 |
| 要查詢的日期 | 2026/7/4 |
| 一年中的第幾天 | =B1-DATE(YEAR(B1),1,1)+1 |
| 第 n 個 | =INT((B2-1)/7)+1 |
第三、第四個表格的答案是:一年中的第幾天為 185、這一年的天數為 365、剩餘天數為 180、第 n 個為 27。如果相減的結果顯示成「1900/7/3」這樣的日期,請把儲存格格式改成「通用格式」。
另外,Excel 的日期只支援 1900 年 1 月 1 日以後。更早的日期,請使用本頁的計算機或 Python。
用 Google 試算表計算的方法
| 要查詢的日期 | 2026/7/4 |
| 星期 | =TEXT(B1,"dddd") |
| 要查詢的日期 | 2026/7/4 |
| 星期代號(1=星期日~7=星期六) | =WEEKDAY(B1) |
| 要查詢的日期 | 2026/7/4 |
| 一年中的第幾天 | =B1-DATE(YEAR(B1),1,1)+1 |
| 這一年的天數 | =DATE(YEAR(B1),12,31)-DATE(YEAR(B1),1,1)+1 |
| 剩餘天數 | =B3-B2 |
| 要查詢的日期 | 2026/7/4 |
| 一年中的第幾天 | =B1-DATE(YEAR(B1),1,1)+1 |
| 第 n 個 | =INT((B2-1)/7)+1 |
只有把星期轉成文字的函數寫法和 Excel 不同,Google 試算表的 TEXT 函數要把格式代碼寫成 dddd(試算表的語言設定為中文(台灣)時,會顯示「星期六」)。相減的結果顯示成日期時,可以從選單的「格式 → 數值 → 數值」改成數字。
用 Python 計算的方法
import datetime
year, month, day = 2026, 7, 4 # 要查詢的日期
# --- 方法 1:用標準函式庫 datetime 求 ---
target_date = datetime.date(year, month, day)
weekday_names = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
weekday_name = weekday_names[target_date.weekday()]
print(f"{year}年{month}月{day}日是{weekday_name}")
day_of_year = target_date.timetuple().tm_yday # 一年中的第幾天
days_in_year = datetime.date(year, 12, 31).timetuple().tm_yday # 這一年的天數
print(f"這一年的第 {day_of_year} 天(共 {days_in_year} 天),還剩 {days_in_year - day_of_year} 天")
nth = (day_of_year - 1) // 7 + 1 # 這一年的第 n 個星期幾
print(f"這一年的第 {nth} 個{weekday_name}")
# --- 方法 2:用蔡勒公式求 ---
q, m, y = day, month, year
if m <= 2: # 1 月、2 月當成前一年的 13 月、14 月
m += 12
y -= 1
K, J = y % 100, y // 100
h = (q + 13 * (m + 1) // 5 + K + K // 4 + J // 4 - 2 * J) % 7
zeller_names = ['星期六', '星期日', '星期一', '星期二', '星期三', '星期四', '星期五']
print(f"用蔡勒公式算也是{zeller_names[h]}")
用 LaTeX 等數學式語言的寫法(可直接複製)
h = (q + ⌊13(m + 1)/5⌋ + K + ⌊K/4⌋ + ⌊J/4⌋ − 2J) mod 7
h = \left( q + \left\lfloor \frac{13(m+1)}{5} \right\rfloor + K + \left\lfloor \frac{K}{4} \right\rfloor + \left\lfloor \frac{J}{4} \right\rfloor - 2J \right) \bmod 7
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>h</mi><mo>=</mo>
<mrow>
<mo>(</mo>
<mi>q</mi><mo>+</mo>
<mrow><mo>⌊</mo><mfrac><mrow><mn>13</mn><mo>(</mo><mi>m</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mn>5</mn></mfrac><mo>⌋</mo></mrow>
<mo>+</mo><mi>K</mi>
<mo>+</mo><mrow><mo>⌊</mo><mfrac><mi>K</mi><mn>4</mn></mfrac><mo>⌋</mo></mrow>
<mo>+</mo><mrow><mo>⌊</mo><mfrac><mi>J</mi><mn>4</mn></mfrac><mo>⌋</mo></mrow>
<mo>−</mo><mn>2</mn><mo>⁢</mo><mi>J</mi>
<mo>)</mo>
</mrow>
<mspace width="0.3em"/><mo>mod</mo><mspace width="0.3em"/><mn>7</mn>
</mrow>
</math>
h = (q + floor(13(m + 1)/5) + K + floor(K/4) + floor(J/4) - 2J) mod 7
h = Mod[q + Floor[13 (m + 1)/5] + K + Floor[K/4] + Floor[J/4] - 2 J, 7]
h := (q + floor(13*(m + 1)/5) + K + floor(K/4) + floor(J/4) - 2*J) mod 7;
h = mod(q + floor(13*(m + 1)/5) + K + floor(K/4) + floor(J/4) - 2*J, 7);
h = (q + ⌊13(m + 1)/5⌋ + K + ⌊K/4⌋ + ⌊J/4⌋ - 2J) mod 7
n = ⌊(d − 1)/7⌋ + 1
n = \left\lfloor \frac{d - 1}{7} \right\rfloor + 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>n</mi><mo>=</mo>
<mrow><mo>⌊</mo><mfrac><mrow><mi>d</mi><mo>−</mo><mn>1</mn></mrow><mn>7</mn></mfrac><mo>⌋</mo></mrow>
<mo>+</mo><mn>1</mn>
</mrow>
</math>
n = floor((d - 1)/7) + 1
n = Floor[(d - 1)/7] + 1
n := floor((d - 1)/7) + 1;
n = floor((d - 1)/7) + 1;
n = ⌊(d - 1)/7⌋ + 1
365 = 7 × 52 + 1, 366 = 7 × 52 + 2
365 = 7 \times 52 + 1, \quad 366 = 7 \times 52 + 2
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mn>365</mn><mo>=</mo>
<mn>7</mn><mo>×</mo><mn>52</mn><mo>+</mo><mn>1</mn>
<mo>,</mo><mspace width="0.7em"/>
<mn>366</mn><mo>=</mo>
<mn>7</mn><mo>×</mo><mn>52</mn><mo>+</mo><mn>2</mn>
</mrow>
</math>
365 = 7 xx 52 + 1, 366 = 7 xx 52 + 2
QuotientRemainder[365, 7]
iquo(365, 7); irem(365, 7);
q = floor(365/7); r = mod(365, 7);
365 = 7 × 52 + 1
請 ChatGPT 幫忙計算的方法
你是日期計算助理。請務必實際執行 Python 程式碼來進行下面的計算,並只根據執行結果的數值回答(不要用心算或猜測作答)。 請針對 2026 年 7 月 4 日求出下列各項: 1. 星期幾 2. 是那一年的第幾天,以及到 12 月 31 日還剩幾天 3. 是那一年的第幾個同一星期幾(以及這個星期幾全年共有幾個) 請列出計算用的程式碼,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權