完成式超難?其實只要搞懂一個核心概念:「到某個時間點已經完成」。完成式用法的關鍵在於「時間點」,現在完成式看「現在」,過去完成式看「過去某時」,未來完成式看「未來某時」。搞懂這個,三種完成式立刻變簡單!

完成式核心概念:have/had/will have + p.p.
先搞懂完成式到底在講什麼。
為什麼叫「完成式」? 因為它強調某件事「到某個時間點已經完成了」或「完成到某個程度」。重點不是動作本身,而是「完成的狀態」。
完成式公式:
- 現在完成式:have/has + p.p.
- 過去完成式:had + p.p.
- 未來完成式:will have + p.p.
(p.p. = past participle 過去分詞,通常是 V-ed,像 finished, eaten, gone)
核心精神: 完成式都在講「到某個時間點,這件事已經完成了」。差別只在「哪個時間點」:
- 現在完成式 → 到現在這一刻
- 過去完成式 → 到過去某時間點
- 未來完成式 → 到未來某時間點

三種完成式都是站在某個時間點,往回看「已經完成了」。只是這個「時間點」不同:
- 現在完成式:站在「現在」往回看
- 過去完成式:站在「過去某時」往回看
- 未來完成式:站在「未來某時」往回看
搞懂這個,三種完成式就不會混亂了!
現在完成式:到「現在」已經完成
公式:have/has + p.p.
時間點:現在這一刻
現在完成式是站在「現在」這個時間點,往回看過去發生的事。重點是這件事跟「現在」有關係。
為什麼用現在完成式?三種情況:
情況 1:過去發生,影響延續到現在 過去做了某事,結果或影響現在還在。
比如「我吃過早餐了」→ 影響現在:我現在不餓。「他去日本了」→ 影響現在:他現在不在這裡。
情況 2:人生經驗(做過某事) 你這輩子做過某事,經驗還在。
通常用 Have you ever…?(你曾經…嗎?)I have never…(我從沒…)。
重點不是「什麼時候做的」,而是「有沒有這個經驗」。
情況 3:剛剛發生的事 剛剛才發生、剛完成的事,用 just(剛剛)。事情很新鮮,跟現在的關係很密切。
常見時間標記:
- already(已經)、yet(還沒,用在否定句和疑問句)
- just(剛剛)、recently(最近)
- ever(曾經,疑問句)、never(從不)
- since(自從某時間點)、for(持續多久)
跟過去式的關鍵差別:過去式強調「什麼時候」,現在完成式強調「跟現在的關係」。
- I ate breakfast at 7am. (過去式:強調時間點)
- I have eaten breakfast. (現在完成式:強調影響 = 我現在不餓)
(1)
A: Have you ever been to Japan?
A: 你去過日本嗎?
B: Yes, I’ve been there twice. It’s amazing!
B: 去過,我去過兩次。超棒的!
(2)
A: Where’s Tom?
A: Tom 在哪?
B: He’s gone home. He left about an hour ago.
B: 他回家了。他大概一小時前走的。
(3)
A: Are you hungry? Want to grab lunch?
A: 你餓嗎?要去吃午餐嗎?
B: No thanks, I’ve already eaten.
B: 不用了謝謝,我已經吃過了。
(4) She has lived in Taipei for 10 years and still loves it.
她在台北住了10年,現在還是很愛這裡。
(5) I have just finished my assignment, so I can finally relax!
我剛寫完作業,終於可以放鬆了!
過去完成式:到「過去某時間點」已經完成
公式:had + p.p.
時間點:過去的某個時間點(不是現在)
過去完成式是站在「過去某個時間點」,往回看更早發生的事。這個時態最重要的功能是分辨先後順序。
為什麼用過去完成式?
當你講兩件過去的事,需要分清楚「哪件先發生」時,就用過去完成式。
- 先發生的事 → 用過去完成式(had + p.p.)
- 後發生的事 → 用過去式(V-ed)
關鍵:這是關於「順序」的時態
過去完成式的核心功能是強調「更早」。當你想表達「在某件過去的事之前,另一件事已經發生了」,就用過去完成式。
比如:
- When I arrived, the movie had already started. (電影先開始,我後到)
- She was tired because she had worked all day. (先工作一整天,所以累)
什麼時候不需要用?
如果順序已經很清楚(用 before/after),可以都用過去式。但如果想強調「更早」,還是用過去完成式比較好。
(6)
A: Why did you miss the train?
A: 你為什麼錯過火車?
B: By the time I got to the station, the train had already left.
B: 我到車站的時候,火車已經開走了。
(7)
A: How was the test?
A: 考試怎麼樣?
B: Terrible! I hadn’t studied the right chapters, so I failed.
B: 糟透了!我沒唸對章節,所以我不及格。
(8)
A: Did you enjoy the concert?
A: 你喜歡演唱會嗎?
B: I couldn’t go. When I tried to buy tickets, they had already sold out.
B: 我沒去成。我想買票的時候,已經賣光了。
(9) I had never seen snow before I moved to Canada.
在我搬到加拿大之前,我從沒看過雪。
未來完成式:到「未來某時間點」會完成
公式:will have + p.p.
時間點:未來的某個時間點
未來完成式是站在「未來某個時間點」,往回看到那時候會完成的事。這個時態比較少用,但掌握後會讓你的英文更進階。
為什麼用未來完成式?
當你想表達「在未來某個時間之前,某件事會完成」,就用未來完成式。重點是「到那時候會完成」。
想像你站在未來的某一天,回頭看:「到今天為止,這件事已經完成了。」
比如:
- By next week, I will have finished this project. (下週之前,這專案會完成)
- By the time you arrive, we will have left. (你到的時候,我們會已經離開了)
常見時間標記:
- by(在…之前):by 5pm, by next month, by the end of the year
- by the time(在…的時候):by the time you get here
- before(在…之前)+ 未來時間
使用場合:
- 訂定計畫和目標
- 預測未來會達成的事
- 設定 deadline
跟未來式 (will + V) 的差別:
- 未來式 (will do):未來會做某事(還沒開始或正在做)
- 未來完成式 (will have done):未來某時間點之前會完成(到那時已經做完了)
(10)
A: When can I see the report?
A: 我什麼時候可以看到報告?
B: By tomorrow afternoon, I will have finished it.
B: 明天下午之前,我會完成它。
(11)
A: How long will you have worked here by the end of this year?
A: 到今年年底,你會在這裡工作多久了?
B: I will have worked here for five years. Time flies!
B: 我會在這裡工作五年了。時間過得真快!
(12)
A: Are you worried about the exam?
A: 你擔心考試嗎?
B: Not really. By the time the exam comes, I will have studied everything.
B: 不太擔心。考試來臨時,我會唸完所有東西了。
(13) By 2030, scientists will have discovered new ways to fight climate change.
到2030年,科學家會發現對抗氣候變遷的新方法。
(14) She will have graduated from university before she turns 22.
她22歲之前會大學畢業。
搞懂三種完成式了嗎?關鍵就是記住「時間點」!現在完成式看「現在」,過去完成式看「過去某時」,未來完成式看「未來某時」。只要搞清楚你站在哪個時間點往回看,就不會再混亂啦!記住公式 have/had/will have + p.p.,多看例句培養語感,完成式從此不再是惡夢!
如果你喜歡這篇文章的話,可以追蹤我們的Threads和Facebook唷!