英语现在完成时指南:for、since、already、been 与 gone

现在完成时把过去和现在联系起来:一个动作发生在不明确的时间,但现在仍然重要;或者一个情况始于过去并持续到现在。本单元有两个部分讲形式以及 与现在相连的时间段,一个部分讲根据 已结束的时间做出选择,两个部分讲 信号词 及其他细节。本指南分为五个部分,与诊断测试的五个部分完全对应。

阅读英文版指南 → 本页为机器翻译,未经母语者审校,可能有不准确之处。以英文版为准。

诊断结果会告诉你哪个部分需要复习。点击下方对应的部分。

与现在相连 形式,以及持续到现在的时间段已结束的时间 现在完成时与一般过去时信号词 already、yet、ever、been、gone、进行形式

核心概念:一条从过去到现在的线

想象一条线,把过去的一个动作或情况和现在这一刻连起来。如果这条线没有断开,通常就该用现在完成时。

一个动作或情况始于过去,一条线把它连接到现在
用法 例句
人生经历 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. 1
    时间已经结束了,还是仍然和现在相连? 明确说出的、已结束的时间(如 yesterday)用一般过去时。与现在仍有联系的用现在完成时(第 3 部分)。
  2. 2
    是不是始于过去并持续到现在? 和 for 或 since 连用时用现在完成时,不用一般现在时(第 2 部分)。
  3. 3
    是否有信号词或细节改变了形式? already、yet、ever、never、been、gone,或进行形式(第 4 和第 5 部分)。

第 1 部分讲形式本身:have 或 has 加过去分词。

1

与现在相连

形式和过去分词

用 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 连用。
2

与现在相连

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 和 sinceI 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 询问的是到现在为止的一段时间。
3

已结束的时间

现在完成时还是一般过去时?

时间已经结束了,还是仍然和现在相连?

规则: 明确说出的、已结束的时间(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 连用,以及表示持续到现在的时间段时,仍然需要用现在完成时。

4

信号词

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。

5

信号词

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 和 goneMark 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 聊天工具中。

显示提示词
我想练习英语的现在完成时:have 和 has 构成的形式、不规则过去分词、for、since 和 how long、在现在完成时和一般过去时之间做选择、already、yet、just、ever 和 never 等信号词、been 与 gone,以及进行形式。请每次只给我一道题,并轮换题型:填空、选择题(A 到 D)、“对还是错?”判断句,以及句子改写。请确保语境只让一个答案正确,并避免美式英语也接受一般过去时的题目(例如和 just、already 或 yet 连用时)。请在五个方面之间循环:形式和过去分词;for、since 和 how long;现在完成时与一般过去时;信号词;been、gone 和进行形式。从中级难度开始,连续答对两题就提高难度,连续答错两题就降低难度。如果我答错了,请用中文解释规则,然后继续。每做完 10 道题,告诉我这五个方面中我应该复习哪一个。

阅读英文版指南 →