现在完成时把过去和现在联系起来:一个动作发生在不明确的时间,但现在仍然重要;或者一个情况始于过去并持续到现在。本单元有两个部分讲形式以及 与现在相连的时间段,一个部分讲根据 已结束的时间做出选择,两个部分讲 信号词 及其他细节。本指南分为五个部分,与诊断测试的五个部分完全对应。
阅读英文版指南 → 本页为机器翻译,未经母语者审校,可能有不准确之处。以英文版为准。
诊断结果会告诉你哪个部分需要复习。点击下方对应的部分。
核心概念:一条从过去到现在的线
想象一条线,把过去的一个动作或情况和现在这一刻连起来。如果这条线没有断开,通常就该用现在完成时。
| 用法 | 例句 |
|---|---|
| 人生经历 | She has run two marathons. |
| 持续到现在的情况 | I have worked here since March 2024. |
| 到现在为止的变化 | The town has grown since the new line opened. |
| 尚未结束的时间段 | I have had three coffees today. |
- 1
时间已经结束了,还是仍然和现在相连? 明确说出的、已结束的时间(如 yesterday)用一般过去时。与现在仍有联系的用现在完成时(第 3 部分)。
- 2
是不是始于过去并持续到现在? 和 for 或 since 连用时用现在完成时,不用一般现在时(第 2 部分)。
- 3
是否有信号词或细节改变了形式? already、yet、ever、never、been、gone,或进行形式(第 4 和第 5 部分)。
第 1 部分讲形式本身:have 或 has 加过去分词。
形式和过去分词
用 have 还是 has?用哪个过去分词?先掌握形式。
规则: 现在完成时是 have 或 has 加过去分词。否定句用 haven't 或 hasn't,疑问句把 have 或 has 放在句首。
have/has + 过去分词
| 主语 | 形式 | 例句 |
|---|---|---|
| I, you, we, they | have + 过去分词 | I have finished my homework. |
| he, she, it | has + 过去分词 | She has visited Japan twice. |
要看真正的主语:everyone、somebody 和 the number of 是单数(has);the prices of 和 a few students 是复数(have)。
不规则过去分词
| 原形 | 一般过去时 | 过去分词 |
|---|---|---|
| go | went | gone |
| see | saw | seen |
| do | did | done |
| write | wrote | written |
| eat | ate | eaten |
| take | took | taken |
| sing | sang | sung |
| buy | bought | bought |
否定句和疑问句
| 类型 | 例句 |
|---|---|
| 否定句 | I haven’t finished yet. She hasn’t called. |
| 疑问句 | Have you ever been to Paris? Has he arrived? |
本部分常见错误
- have 或 has 用错
My parents has moved to Ulsan.✓ My parents have moved to Ulsan.my parents 相当于 they,所以用 have。 - 过去分词用错
I have forgot her name.✓ I have forgotten her name.forget 的过去分词是 forgotten。 - 现在完成时与已结束的时间连用
Did they ever eaten here?✓ Have they ever eaten here?过去分词 eaten 要和 have 连用,不能和 did 连用。
for、since 和 how long
是不是始于过去并持续到现在?用 for、since 还是 how long?
规则: 表示始于过去并持续到现在的情况,用现在完成时,不用一般现在时。for 后接一段时间;since 后接一个起点。
for 还是 since?
| 单词 | 后接 | 例句 |
|---|---|---|
| for | 一段时间 | for three weeks, for ages, for a long time |
| since | 一个起点(某一天、某一年、某件事) | since Monday, since 2019, since I was a child |
不用一般现在时
| 错误 | 正确 |
|---|---|
| I know him for ten years. | I have known him for ten years. |
| How long do you work here? | How long have you worked here? |
| I am in this class since March. | I have been in this class since March. |
很多语言(包括韩语、中文和日语)在这里用现在时或过去时。在英语中,如果时间段一直持续到现在,就要用现在完成时。for 和一般过去时连用表示已经结束的时间段:I lived in Busan for two years(我现在不住在那里了)。
本部分常见错误
- 混淆 for 和 since
I have lived here since three years.✓ I have lived here for three years.three years 是一段时间,所以用 for。 - 该用现在完成时却用了一般现在时
I work here since March.✓ I have worked here since March.这个情况从三月开始,一直持续到现在。 - 该用现在完成时却用了一般现在时
How long do you know Sara?✓ How long have you known Sara?how long 询问的是到现在为止的一段时间。
现在完成时还是一般过去时?
时间已经结束了,还是仍然和现在相连?
规则: 明确说出的、已结束的时间(yesterday、in 2019、ago、用 when 提问)用一般过去时。没有明确时间、到现在为止的时间段(since、so far),或者第一次,用现在完成时。
时间已结束,还是与现在仍有联系?
| 形式 | 用法 | 例句 |
|---|---|---|
| 一般过去时 | 具体的、已结束的时间 | I saw him yesterday. |
| 现在完成时 | 没有具体时间,或与现在有联系 | I have seen him before. |
信号词
| 一般过去时 | 现在完成时 |
|---|---|
| yesterday, last week, in 2019, ago, when? | ever, never, since, so far, up to now, recently |
在 it is the first time(或 the second time)之后用现在完成时:It’s the first time I have seen snow。this week 或 this month 两种时态都可以用,取决于这段时间是否已经结束。
本部分常见错误
- 现在完成时与已结束的时间连用
I have graduated in 2022.✓ I graduated in 2022.in 2022 是具体的、已结束的时间。 - 现在完成时与已结束的时间连用
When have you started the job?✓ When did you start the job?when 询问的是一个具体的时间。 - 该用现在完成时却用了一般现在时
It's the first time I see the ocean.✓ It's the first time I have seen the ocean.在 it is the first time 之后用现在完成时。
更多:美式英语
在美式英语中,just、already 和 yet 也常和一般过去时连用:I just ate. Did you finish yet? 在美式英语中两种形式都正确。但和 since、so far 连用,以及表示持续到现在的时间段时,仍然需要用现在完成时。
already、yet、just、ever 和 never
already、yet、just、ever 还是 never:每个词放在哪里?
规则: already 和 just 通常放在 have 和过去分词之间;yet 通常放在否定句和疑问句的末尾。ever 用于疑问句和最高级之后;never 表示到现在为止从来没有。
每个词的位置
| 单词 | 位置 | 例句 |
|---|---|---|
| already | 在 have 和过去分词之间,用于肯定句 | I have already finished. |
| yet | 否定句和疑问句的末尾 | I haven’t finished yet. Have you finished yet? |
| just | 在 have 和过去分词之间 | She has just left. |
| still | 在 haven’t 或 hasn’t 前面 | I still haven’t replied. |
| ever | 用于疑问句,以及最高级之后 | Have you ever been to Paris? The best pizza I have ever had. |
| never | 在 have 和过去分词之间,表示从来没有 | I have never tried sushi. |
| so far | 常放在句末,表示到现在为止 | We have finished three tasks so far. |
在 nobody 这类否定词之后,用 ever,不用 never:Nobody has ever complained。
本部分常见错误
- 信号词的位置或意思用错
I have ever seen that movie.✓ I have seen that movie. / I have never seen that movie.ever 不用于肯定陈述句。 - 信号词的位置或意思用错
I have finished yet my homework.✓ I have already finished my homework. / I haven't finished my homework yet.yet 放在否定句和疑问句的末尾。
更多:正式句型
have yet to 加动词表示到现在为止还没有做:I have yet to meet him。在正式书面语中,never 可以放在句首,这时 have 或 has 要放在主语前面:Never have I seen such a crowd。
been、gone 和进行形式
been 还是 gone?一般形式还是进行形式?细节决定意思。
规则: been to 表示去过并且回来了;gone to 表示还没回来。进行形式强调正在持续的活动,但状态动词和已完成事情的数量要用一般形式。
been 与 gone
| 单词 | 意思 | 例句 |
|---|---|---|
| been to | 去过并已返回 | I have been to Rome twice. |
| gone to | 还在那里,或在路上 | She’s not here. She has gone to the store. |
在美式英语中,have gone 也可以表示多次去过(I’ve gone there many times)。当某人现在不在时,这个区别总是很重要。
现在完成进行时
| 形式 | 强调 | 例句 |
|---|---|---|
| 现在完成时 | 完成、结果、数量 | I have written three emails. |
| 现在完成进行时 | 正在持续的活动 | I have been writing emails all morning. |
know、own、belong、believe 和 have(表示拥有)这类状态动词不用进行形式:I have known her for years,不说 have been knowing。
本部分常见错误
- 混淆 been 和 gone
Mark has been to lunch; he'll be back at one.✓ Mark has gone to lunch; he'll be back at one.gone to 表示他还没回来。 - 现在完成时与现在完成进行时
We have been owning this car for years.✓ We have owned this car for years.own 是状态动词,不用进行形式。
自我检测
每个句子都正确吗?点击查看答案。如果你不确定,部分标签会告诉你该看哪里。
第 1 部分My friends has arrived.
错误。 My friends have arrived. my friends 相当于 they,所以用 have。
第 1 部分Have you ever flown a kite?
正确。 fly 的过去分词是 flown。
第 2 部分I have taught English for twelve years.
正确。 for 后接一段时间,而且这个情况持续到现在。
第 2 部分She is here since noon.
错误。 She has been here since noon. 这个情况从中午开始,一直持续到现在。
第 3 部分I have bought this jacket two days ago.
错误。 I bought this jacket two days ago. ago 表示已结束的时间。
第 3 部分So far, I have read two of her novels.
正确。 so far 表示到现在为止。
第 4 部分I have never ridden a camel.
正确。 never 放在 have 和过去分词之间。
第 4 部分I have finished already my essay.
错误。 I have already finished my essay. already 放在 have 和过去分词之间。
第 5 部分Kate has gone to Spain, so she isn't here.
正确。 gone to 表示她还没回来。
第 5 部分I have been believing in ghosts since I was little.
错误。 I have believed in ghosts since I was little. believe 是状态动词。
AI 练习提示词
把这段话粘贴到 AI 聊天工具中。