两种时态都谈论过去——那为什么英语母语者有时说 I've lost my keys,有时又说 I lost my keys yesterday?这种选择并非随意。现在完成时与现在保持联系;一般过去时则完全属于已结束的过去。一旦理解了这一区别,通常就能自然选对时态。
快速提示: 如果可以加入已结束的具体过去时间(yesterday、last week、in 2005、when I was ten),使用一般过去时。如果时间范围仍未结束,或过去的事件与现在仍有关联,就用现在完成时。
核心区别
| 时态 | 构成 | 使用场景 |
|---|---|---|
| 现在完成时 | have / has + 过去分词 | 时间未结束,或过去事件与现在相关且未说明具体的已结束过去时间 |
| 一般过去时 | 动词 + -ed(或不规则过去式) | 时间已结束——包括历史事实和过去叙事,即使没有精确的时间说明 |
- I*'ve lost** my keys.* ——我现在没有钥匙(结果与现在相关,未提及具体时间)
- I lost my keys yesterday. ——已结束的事件,指明了具体时间
汉语没有时态屈折变化,"完成"通常通过"了"或时间副词来表达:"我丢了钥匙"和"我昨天丢了钥匙"在动词形式上没有区别。英语中时态的选择很大程度上取决于是否提到了已结束的具体过去时间:提到了(yesterday、last year)→ 一般过去时;没提具体过去时间、但动作与现在相关 → 现在完成时。
何时使用一般过去时
只要说明或暗示了已结束的具体过去时间,使用一般过去时:
- I saw her last week.
- They moved to Madrid in 2018.
- She didn't sleep well last night.
- What did you do yesterday?
一般过去时的典型标志词:yesterday、last night / week / year、in 2010、ago、when I was young、that morning、at 9 o'clock。一旦出现这些词,一般过去时就是自然选择。
如果对话中已经建立了过去的时间框架,即使不重复标志词,也继续使用一般过去时:
- I was in Rome last spring. I visited the Colosseum and ate great pasta.(两个动作都属于那次已结束的旅行)
一般过去时形式的完整讲解——规则动词(-ed)、不规则过去式及疑问句、否定句——见 Past simple: was / were、Past simple: regular verbs、Past simple: irregular verbs 和 Past simple: questions & negatives。
何时使用现在完成时
在三种主要情况下使用现在完成时:
1. 结果与现在相关(未说明时间)
不说何时——重要的是当下的影响:
- I*'ve broken** my arm.*(手臂现在骨折了)
- She*'s left**.*(她现在不在这里了)
- We*'ve run out** of milk.*(现在没有牛奶了)
对比:✅ I*'ve broken** my arm*(现在)vs. ✅ I broke my arm in 2015(已结束,已说明具体时间)。
2. 人生经历,常与 ever 和 never 连用
谈论人生中某件事是否发生过,不说具体时间:
- Have you ever been to Japan?
- I*'ve never eaten** sushi.*
- She*'s visited** twenty countries.*
一旦加入已结束的具体过去时间,改用一般过去时:✅ I went to Japan in 2019。
这一用法在 Present perfect: ever / never (experience) 中有详细介绍。
3. 与 for 和 since 连用的未结束情况
当某个状态或情况从过去开始并持续至今:
- I*'ve lived** here for six years.*(我至今仍住在这里)
- She*'s worked** at the hospital since 2020.*(她至今仍在那里工作)
如果情况已结束,使用一般过去时:✅ I lived in Paris for two years(但我现在不住那里了)。
关于 for 和 since 的全部内容,见 Present perfect: for & since。
时间标志词一览
| 现在完成时 | 一般过去时 |
|---|---|
| just、already、yet(英式英语/考试);recently、lately | yesterday、last night / week / year |
| ever、never | ago(two days ago) |
| for、since(情况未结束) | in 2010、in January、at 9 o'clock |
| today、this week、this year(时间段尚未结束) | when I was young、that day、then |
注意 today 和 this week: 如果你把这个时间段看作尚未结束且与现在相关,使用现在完成时(I*'ve had** three coffees today*)。对于这个仍未结束的时间段内的某个具体事件,一般过去时同样自然:I got up at 7 today。一旦该时间段完全结束,则始终使用一般过去时。
"先说新情况、再补充细节"模式
英语母语者常用现在完成时引出新情况,再用一般过去时补充细节:
- I*'ve found** a new job. I started on Monday.*
- Someone has broken the window. They used a stone.
- Have you heard? Maria got engaged last night!
现在完成时表明某事已发生且与现在相关。一般过去时则补充具体细节。这种两步模式在日常对话中十分自然。
英式英语 vs. 美式英语
有些英式英语会用现在完成时的地方,美式英语中常常可以用一般过去时:
- 英式: I*'ve just eaten**.* / 美式: I just ate.
- 英式: She*'s already left**.* / 美式: She already left.
这两种说法在各自的英语变体中都符合语法。在许多国际考试及以英式英语为基础的课程中,搭配 just、already 和 yet 的现在完成时是更稳妥的选择。
常见错误
- ❌ Have you ever went to Italy? → ✅ Have you ever been to Italy?(需要过去分词,而非一般过去式)
- ❌ I've seen him yesterday. → ✅ I saw him yesterday.(yesterday = 已结束的具体时间 → 一般过去时)
- ❌ She has left the company last year. → ✅ She left the company last year.(last year = 已结束 → 一般过去时)
- ❌ We didn't finish yet. → ✅ We haven't finished yet.(yet 表示未完成的预期 → 现在完成时;美式英语中 didn't finish yet 常见)
- ❌ I live here since 2019. → ✅ I*'ve lived** here since 2019.*(持续中的情况 → 现在完成时)
- ❌ Have you seen that film last night? → ✅ Did you see that film last night?(last night = 已结束 → 一般过去时)
快速练习
选择正确的时态——现在完成时或一般过去时:
- ___ you ever ___ (try) sushi?
- I ___ (see) that film last Saturday.
- She ___ (just / finish) her homework.
- They ___ (live) in London for three years, then they moved to Edinburgh.
- ___ (you / hear)? Tom ___ (get) the job!
显示答案
- Have you ever tried(人生经历,未指明具体时间)
- I saw(last Saturday = 已结束的具体时间)
- She has just finished(just + 现在的结果)
- They lived(已结束的情况——他们不再住在那里)
- Have you heard? Tom got(新情况用现在完成时,细节用一般过去时)
要点总结
- 时间已结束且已说明(yesterday、last year、in 2005、ago)→ 一般过去时。
- 时间范围尚未结束,或未提及具体过去时间但与现在有关(经历、新消息、持续情况)→ 现在完成时。
- 在英式英语/考试中,just、already 和 yet 与现在完成时连用。Yesterday、ago、last… 始终与一般过去时连用。recently 两种时态均可。
- for 和 since 搭配持续中的情况 → 现在完成时;搭配已结束的情况 → 一般过去时。
- 日常对话中:现在完成时引出新情况,再用一般过去时补充细节。