現在完成式不用慌:未完成時間的文法

現在完成式不用慌:未完成時間的文法

你正在開會。有人問:「Did you send the file?」你回答:「I have sent it.」完美。冷靜。專業。接著有人問:「When?」你說:「I have sent it yesterday.」突然文法桌翻了,椅子滑過房間,present perfect 又開始看起來很可疑。

Present perfect 的名聲很戲劇化,但它的主要概念其實很友善:它把過去連到現在。它不只是說「這件事發生了」,而是說「這件事發生了,而且現在有關係」。

快速答案

當過去動作和現在有連結時,使用 present perfect。

基本形式是:

subject + have / has + past participle

  • I have finished.
  • She has arrived.
  • They have changed the schedule.

Present perfect 常出現在四種情況:

  1. 現在的結果很重要:I have lost my badge.
  2. 時間範圍尚未結束:We have had three meetings today.
  3. 人生經驗累積到現在:He has visited London.
  4. 某個狀況從過去開始並延續到現在:They have lived here for six years.

如果句子明確說出已結束的過去時間,例如 yesterdaylast weekin 2022,就改用 simple past。

模式

把 present perfect 想成一座橋。一端在過去,另一端碰到現在。

Simple past 指向已完成的事件:

  • I broke my glasses yesterday.

Present perfect 指向帶有現在影響的過去事件:

  • I have broken my glasses, so I cannot read the screen.

眼鏡是在過去壞的,但問題正坐在現在這裡。

Present perfect 很喜歡未完成的時間詞:

  • today
  • this week
  • this month
  • this year
  • recently
  • lately
  • so far
  • up to now

為什麼?因為時間範圍還開著。如果現在是下午 2 點,today 還沒結束。今天還可能發生更多事。

  • I have answered twelve emails today.

這表示今天還在進行。郵件數量可能還會上升,因為 email 有時像一台早餐吃寧靜的機器。

Present perfect 不太喜歡已結束的時間詞:

  • yesterday
  • last night
  • last year
  • two days ago
  • in 2020
  • when I was a child

這些詞把時間範圍關起來。用 simple past:

  • I answered twelve emails yesterday.

最簡單的問題是:這段時間還能接收更多事件嗎?

如果可以,present perfect 可能可用:

  • I have made three calls this morning. 現在仍是早上。
  • We have had two delays this week. 這一週還沒結束。

如果不行,simple past 通常更合適:

  • I made three calls this morning. 現在已經晚上。
  • We had two delays last week. 上週已經關門。

所以同一個片語會因說話時間不同而改變。早上 10 點,this morning 尚未結束。晚上 8 點,它已經結束。文法不是在設陷阱,它只是在檢查時間窗是否還開著。

自然例句

現在結果

當結果現在很重要時,使用 present perfect。

  • I have lost my phone. Can you call it?
  • She has left the office. You should email her.
  • The price has changed. We need to update the quote.
  • Someone has eaten the last cookie. The meeting may never recover.

精確時間不是主角。現在的結果才是。

未完成時間

當時間範圍仍在延續時,使用 present perfect。

  • We have received five applications this week.
  • I have had two cups of coffee today.
  • The team has fixed several bugs this month.
  • Sales have improved this quarter.

這一週、今天、這個月、這一季都還開著,所以計數和現在相連。

人生經驗

用 present perfect 談到目前為止的人生經驗。

  • Have you ever tried indoor climbing?
  • She has never missed a deadline.
  • I have seen that movie before.
  • They have worked with international clients.

重點是這個經驗是否存在於某人的人生紀錄中,不是它何時發生。

如果你給出精確時間,就改用 simple past:

  • I saw that movie last summer.

持續到現在的狀況

當某件事從過去開始並延續到現在,搭配 forsince 使用 present perfect。

  • I have lived here for three years.
  • She has known him since college.
  • We have used this software since January.
  • They have been open for ten minutes.

for 表示一段時間長度:

  • for two hours
  • for a week
  • for ten years

since 表示起點:

  • since Monday
  • since 2021
  • since the meeting ended

Present perfect continuous

有時你想強調持續時間或活動本身。使用:

have / has been + -ing

  • I have been studying all morning.
  • She has been waiting for twenty minutes.
  • The team has been testing the new design.

Present perfect continuous 通常感覺更主動、暫時,或更重視過程。Present perfect simple 通常更重視結果。

  • I have written three pages. 結果:三頁存在了。
  • I have been writing for three hours. 持續時間:努力延續了三小時。

Already、yet 和 just

三個小字常和 present perfect 一起旅行。

already 表示某事比預期早完成,或現在以前已完成:

  • I have already sent the invitation.

yet 在問題與否定句中表示某事被期待發生:

  • Have you finished yet?
  • I have not finished yet.

just 表示非常近期的動作:

  • She has just joined the call.
  • The download has just completed.

這些字好用,因為它們都指向現在這一刻。動作在過去,但問題關於現在:現在完成了嗎?現在還沒完成嗎?剛剛才發生嗎?

常見陷阱

陷阱 1:present perfect 加上已結束時間

不要把 present perfect 和已關閉的過去時間放在一起。

  • I have finished the report yesterday.
  • I finished the report yesterday.

如果過去時間已結束且很明確,simple past 通常是選擇。

陷阱 2:忘記現在連結

如果事件只是故事細節,simple past 可能更好。

  • We visited the new office in March.

這句只是報告一個過去事件。搭配 in March 時,present perfect 會顯得不自然。

陷阱 3:混淆 for 和 since

for 表示持續多久,用 since 表示起點。

  • for five minutes
  • since 8:30

陷阱 4:用 present perfect 談已成定局的歷史事實

如果人物、組織或時間範圍無法延續,simple past 通常更合適。

  • The scientist discovered the effect in 1912.

日期固定,事件也是歷史事件。

陷阱 5:以為 present perfect 永遠表示「最近」

Present perfect 可以表示最近:

  • I have just arrived.

但也可以描述人生經驗:

  • I have visited Rome twice.

關鍵是和現在的連結,不只是最近。

錯誤 / 更好 / 原因

錯誤 更好 原因
I have seen him yesterday. I saw him yesterday. Yesterday 是已結束的過去時間。
She lived here since 2020. She has lived here since 2020. 狀況從過去開始並延續到現在。
We have completed the form last week. We completed the form last week. Last week 已經關閉。
Have you ever went there? Have you ever been there? Present perfect 需要 past participle。
I am here for three hours. I have been here for three hours. 狀態從更早開始並延續到現在。
They have been finished the task. They have finished the task. 已完成的結果用 present perfect simple。

小練習

選出比較好的句子。

  1. a. I have eaten lunch already.
    b. I ate lunch already yesterday.

  2. a. She has worked here since May.
    b. She worked here since May.

  3. a. We have visited the museum in 2021.
    b. We visited the museum in 2021.

  4. a. Have you ever tried this app?
    b. Did you ever tried this app?

  5. a. I have been waiting for half an hour.
    b. I wait since half an hour.

  6. a. The train has arrived. It is at platform 2.
    b. The train arrived last Monday. It is at platform 2.

答案

  1. a - 現在結果很重要:午餐已經吃完。
  2. a - 工作從五月開始並延續到現在。
  3. b - 句子給出已結束的過去年份。
  4. a - 到目前為止的人生經驗用 present perfect。
  5. a - 延續到現在的持續時間用 present perfect continuous。
  6. a - 火車抵達帶有現在結果。

超短總結

Present perfect 是未完成時間與現在連結的文法。當過去伸到現在時使用它:結果現在重要、時間範圍仍開著、經驗累積到目前,或某狀況從過去開始並延續。如果句子給出已結束的過去時間,simple past 通常勝出。問題不是「它是不是在過去?」而是「這個過去現在還有沒有碰到現在?」