請輸入開始日,以及要加減的年、月、週、天。會連同星期幾一起算出「幾天後」和「幾天前」兩個日期。想扣除週六日計算時,請只在最下面的工作天欄填入天數。
這個頁面可以做什麼
- 把開始日加上年、月、週、天的「幾天後、幾個月後」日期,和減去的「幾天前、幾個月前」日期,連同星期幾一起算出來
- 可以直接用來回答「今天起 90 天後是哪天?」「截止日的 2 週前是幾號?」「1 年 6 個月後是哪天?」這類問題
- 也能算扣除週六、週日的「幾個工作天後、幾個工作天前」的日期(不考慮國定假日)
- 「1 月 31 日的 1 個月後是哪天?」這類月底算法的淺顯解說,以及可直接複製到 Excel、Google 試算表(EDATE、WORKDAY 函數)、Python 的公式,也都整理在這個頁面
這個計算有什麼用?
請款單上的「請於開立日起 30 天內付款」,正是「幾天後」的計算。2026 年 4 月 15 日開立的話,30 天後的 5 月 15 日(星期五)就是期限。
確認「月結 30 天」「月結 60 天」這類付款條件時,也能直接用「幾天後」「幾個月後」的計算。在錯過一天就可能影響信用的金錢場合,用計算確認比扳手指數更安心。
網購的「5 個工作天內出貨」、銀行或機關的「手續需要幾個工作天」,都是跳過週六日計算的工作天。星期五(2026 年 7 月 3 日)下單的話,5 個工作天後是跳過週六日 2 天的下週五(7 月 10 日)。
不過實際期限也會受國定假日和公司各自的休假日影響,請以本計算機的結果(只扣除週六日)為參考,再用日曆確認中間有沒有國定假日或補假。
「2 週後回診」「間隔 4 週再打下一劑」這類醫療時程多半以週為單位;2 週後=14 天後,所以和開始日是同一個星期幾(6 月 1 日是星期一的話,2 週後的 6 月 15 日也是星期一)。
把「28 天份的藥什麼時候吃完」「下次該什麼時候預約」換成日期記下來,就能避免忘記吃藥或錯過預約。
租屋契約常約定「提前終止要在搬出日的 1 個月前通知」。想在 2026 年 10 月 31 日搬出時,1 個月前是 9 月 30 日(9 月沒有和 10 月 31 日相同的「31 日」,所以調整到月底)。
在期限前一刻才通知容易引起糾紛,建議先算出「幾個月前」的日期,再提早行動。期限的算法以契約的約定為準,正確的期限請確認契約。
預產期一般以最後一次月經第一天起 280 天後(懷孕 40 週 0 天)估算(內格萊氏法則)。例如以 2026 年 1 月 1 日為起點,280 天後是 10 月 8 日。
這是假設月經週期 28 天的統計估算,實際的預產期由醫師根據超音波檢查等判斷。用日期算「現在懷孕幾週」的感覺,這個計算很有幫助。
「考前 30 天開始寫考古題」「報名要在考試前幾天截止」這類倒推,就是「幾天前」的計算。考試在 2026 年 11 月 15 日的話,30 天前是 10 月 16 日。
發表會、婚禮、搬家等重要行程,也把「2 週前要完成某事」「前一天要完成某事」的期限換成日期放進行事曆,就能避免準備時漏東漏西。
公式
符號與用語解說
符號
| \(D_0\) | D 下標 0 | 開始日(作為起點的日期)。右下角的小 0 是下標,意思是「第 0 個=出發點」。 |
| \(D_1\)、\(D_2\) | D 下標 1、D 下標 2 | 計算結果的日期。\(D_1\) 是 \(n\) 天後,\(D_2\) 是 \(n\) 天前的日期。 |
| \(n\) | n | 要加或減的天數。(例如 90 天後時 \(n = 90\)) |
| \(w\)、\(d\) | w、d | 週數(\(w\))和湊不滿一週的零頭天數(\(d\))。「3 週又 4 天」時 \(w = 3\)、\(d = 4\)。 |
| \(N\) | N(大寫) | 把週和天一起換成天數的「要加的天數」,用 \(N = 7w + d\) 求出。 |
| \(y\)、\(m\) | y、m | 要加或減的年數(\(y\))和月數(\(m\))。「1 年 2 個月」時 \(y = 1\)、\(m = 2\)。 |
| \(T\) | T | 把年和月一起換成月數的「要加的總月數」,用 \(T = 12y + m\) 求出。 |
| \(b\) | b | 工作天數(扣除週六日所數的天數),取自英文 business day 的字首。 |
| \(C\)、\(W\) | C、W(大寫) | 用工作天計算時,日曆上實際往後推的天數(\(C\)),以及中間夾的週六日天數(\(W\))。兩者的關係是 \(C = b + W\)。 |
用語
| 對應日 | 下個月、下一年的「同一個日期」。1 月 15 日的 1 個月後對應日是 2 月 15 日。「幾個月後」「幾年後」都用這個對應日計算。像 1 月 31 日這樣沒有同一個日期的月份,就以該月的最後一天代替。 |
| 月底調整 | 「幾個月後」的對應日不存在時(例如 1 月 31 日的 1 個月後「2 月 31 日」),改用該月的最後一天(2 月 28 日或 29 日)當答案。本計算機和 Excel 的 EDATE 函數都是這種方式。 |
| 閏年 | 有 2 月 29 日的年份。原則上 4 年 1 次,但能被 100 整除的年份是平年,能被 400 整除的年份才是閏年(2100 年是平年,2000 年是閏年)。2 月 29 日的 1 年後,因為隔年沒有 2 月 29 日,經過月底調整變成 2 月 28 日。 |
| 工作天 | 公司或機關上班的日子,也叫工作日、營業日。本計算機把「扣除週六日的日子」當作工作天計算,不考慮國定假日(春節、端午節、中秋節依農曆,國曆日期每年不同;補假、調整放假也每年由行政院人事行政總處公告)。契約等有時另有工作天的定義,正式期限請確認定義。 |
| 序列值 | Excel 等用來管理日期的連續號碼。以 1900 年 1 月 1 日為 1,每過 1 天加 1。正因為日期是連續號碼,「日期+天數」才能用單純的加法計算。 |
| 大月 | 有 31 天的月份(1、3、5、7、8、10、12 月),和只有 30 天的小月區別。 |
| 小月 | 只有 30 天的月份(4、6、9、11 月)。2 月只有 28 天(閏年是 29 天)。握拳數指節,凸起的是大月、凹下的是小月(2 月例外),這個記法很有名。 |
建議先了解的基礎知識
為了讓您「理解意義」地使用本頁的計算,這裡整理了事先了解會更好懂的基礎知識。
遇到不懂的地方,回頭複習這些內容是最快的方法。
| 日曆的規則(國小低~中年級,7~10 歲) |
|
| 進位、退位的加減法(國小二年級,7~8 歲) |
|
| 乘法(國小二~三年級,7~9 歲) |
|
| 有餘數的除法與週期(國小中年級,8~10 歲) |
|
用 Excel 計算的方法
| 開始日 | 2026/1/15 |
| 天數 n | 10 |
| n 天後的日期 | =B1+B2 |
| n 天前的日期 | =B1-B2 |
| 開始日 | 2026/5/20 |
| 週數 w | 3 |
| 天數 d | 4 |
| 要加的天數 N | =B2*7+B3 |
| N 天後的日期 | =B1+B4 |
| N 天前的日期 | =B1-B4 |
| 開始日 | 2026/5/10 |
| 年數 y | 1 |
| 月數 m | 2 |
| y 年 m 個月後的日期 | =EDATE(B1,B2*12+B3) |
| y 年 m 個月前的日期 | =EDATE(B1,-(B2*12+B3)) |
| 開始日 | 2026/7/3 |
| 工作天數 b | 5 |
| b 個工作天後的日期 | =WORKDAY(B1,B2) |
| b 個工作天前的日期 | =WORKDAY(B1,-B2) |
| 開始日 | 2026/5/10 |
| 年數 | 1 |
| 月數 | 2 |
| 週數 | 3 |
| 天數 | 4 |
| 一起加後的日期 | =EDATE(B1,B2*12+B3)+B4*7+B5 |
| 一起減後的日期 | =EDATE(B1,-(B2*12+B3))-B4*7-B5 |
就像第一個表格,天數的加減用「=日期+天數」這種單純的加法就能算(第一個表格的答案是 1 月 25 日和 1 月 5 日)。月數的加減用 EDATE 函數(=EDATE(開始日,月數)),連沒有同一個日期的月份會調整到月底這一點,都和本計算機相同。往回推時把月數改成負數。
工作天用 WORKDAY 函數(=WORKDAY(開始日,工作天數)),扣除週六日計算(第四個表格的答案是 7 月 10 日)。第 3 個引數傳入國定假日的日期清單,就能連國定假日也扣除,想把國定假日算進去時請使用這個方法。
第五個表格和本計算機的輸入形式相同,答案是 2027 年 8 月 4 日。只有一點要注意:本計算機是照「年 → 月」的順序加,EDATE 則是一次加完,所以在和閏日(2 月 29 日)有關的少數情況下可能差 1 天(例如 2024/2/29 的 1 年 1 個月後,本計算機是 2025/3/28,=EDATE(B1,13) 是 2025/3/29)。
用 Google 試算表計算的方法
| 開始日 | 2026/1/15 |
| 天數 n | 10 |
| n 天後的日期 | =B1+B2 |
| n 天前的日期 | =B1-B2 |
| 開始日 | 2026/5/20 |
| 週數 w | 3 |
| 天數 d | 4 |
| 要加的天數 N | =B2*7+B3 |
| N 天後的日期 | =B1+B4 |
| N 天前的日期 | =B1-B4 |
| 開始日 | 2026/5/10 |
| 年數 y | 1 |
| 月數 m | 2 |
| y 年 m 個月後的日期 | =EDATE(B1,B2*12+B3) |
| y 年 m 個月前的日期 | =EDATE(B1,-(B2*12+B3)) |
| 開始日 | 2026/7/3 |
| 工作天數 b | 5 |
| b 個工作天後的日期 | =WORKDAY(B1,B2) |
| b 個工作天前的日期 | =WORKDAY(B1,-B2) |
| 開始日 | 2026/5/10 |
| 年數 | 1 |
| 月數 | 2 |
| 週數 | 3 |
| 天數 | 4 |
| 一起加後的日期 | =EDATE(B1,B2*12+B3)+B4*7+B5 |
| 一起減後的日期 | =EDATE(B1,-(B2*12+B3))-B4*7-B5 |
結果顯示成數字(序列值)時,可以用選單的「格式 → 數值 → 日期」改成日期顯示。和閏日有關時 EDATE 可能和本計算機差 1 天,這點也和 Excel 相同。
用 Python 計算的方法
from datetime import date, timedelta
import calendar
start = date(2026, 5, 10) # 開始日
years, months, weeks, days = 1, 2, 3, 4 # 要加的年、月、週、天
def add_months(base_date, month_count):
"""把月份往後推,沒有同一個日期的月份就調整到月底(負數往回推)"""
total_month_index = base_date.year * 12 + (base_date.month - 1) + month_count
year, month_index = divmod(total_month_index, 12)
month = month_index + 1
last_day = calendar.monthrange(year, month)[1]
return date(year, month, min(base_date.day, last_day))
# 照「年 → 月 → 週、天」的順序加(減的時候全部改成負數)
after = add_months(add_months(start, years * 12), months) + timedelta(days=weeks * 7 + days)
before = add_months(add_months(start, -years * 12), -months) - timedelta(days=weeks * 7 + days)
print(f"{years} 年 {months} 個月 {weeks} 週 {days} 天後:{after}") # 2027-08-04
print(f"{years} 年 {months} 個月 {weeks} 週 {days} 天前:{before}") # 2025-02-13
def add_business_days(base_date, business_days):
"""扣除週六日,傳回 business_days 個工作天後的日期"""
current = base_date
counted = 0
while counted < business_days:
current += timedelta(days=1)
if current.weekday() < 5: # 0~4 是星期一~星期五
counted += 1
return current
print(f"2026-07-03 的 5 個工作天後:{add_business_days(date(2026, 7, 3), 5)}") # 2026-07-10
用 LaTeX 等數學式語言的寫法(可直接複製)
D₁ = D₀ + n, D₂ = D₀ − n
D_1 = D_0 + n, \quad D_2 = D_0 - n
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>D</mi><mn>1</mn></msub><mo>=</mo>
<msub><mi>D</mi><mn>0</mn></msub><mo>+</mo><mi>n</mi>
<mo>,</mo><mspace width="0.7em"/>
<msub><mi>D</mi><mn>2</mn></msub><mo>=</mo>
<msub><mi>D</mi><mn>0</mn></msub><mo>−</mo><mi>n</mi>
</mrow>
</math>
D_1 = D_0 + n, D_2 = D_0 - n
dateAfter = DatePlus[startDate, n]; dateBefore = DatePlus[startDate, -n]
dateAfter := startDate + n; dateBefore := startDate - n;
date_after = start_date + days(n); date_before = start_date - days(n);
D_1 = D_0 + n, D_2 = D_0 - n
N = 7w + d
N = 7w + d
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi><mo>=</mo>
<mn>7</mn><mi>w</mi>
<mo>+</mo><mi>d</mi>
</mrow>
</math>
N = 7w + d
totalDays = 7*weeks + extraDays
totalDays := 7*weeks + extraDays;
total_days = 7*weeks + extra_days;
N = 7w + d
T = 12y + m
T = 12y + m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>T</mi><mo>=</mo>
<mn>12</mn><mi>y</mi>
<mo>+</mo><mi>m</mi>
</mrow>
</math>
T = 12y + m
totalMonths = 12*years + months
totalMonths := 12*years + months;
total_months = 12*years + months;
T = 12y + m
C = b + W
C = b + W
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>C</mi><mo>=</mo>
<mi>b</mi>
<mo>+</mo><mi>W</mi>
</mrow>
</math>
C = b + W
calendarDays = businessDays + weekendDays
calendarDays := businessDays + weekendDays;
calendar_days = business_days + weekend_days;
C = b + W
請 ChatGPT 幫忙計算的方法
你是日期計算助理。請務必實際執行 Python 程式碼來進行以下計算,並且只根據執行結果的日期回答(不要用心算或推測回答)。 1. 2026 年 5 月 10 日加上「1 年 2 個月 3 週又 4 天」的日期,以及減去後的日期。請照年 → 月 → 週、天的順序加,「幾個月後」以下個月的同一個日期(對應日)計算,沒有同一個日期的月份請調整到該月的最後一天。 2. 2026 年 7 月 3 日(星期五)的 5 個工作天後的日期。工作天只扣除週六、週日計算(不考慮國定假日)。 請分別列出使用的程式碼,以及執行結果的日期和星期幾。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權