你已经学过现在完成时(I've lived here for two years)和过去进行时(I was working when you called)。现在完成进行时(present perfect continuous)将两者结合:描述一个从过去开始、一直延续到现在的动作,并且这个动作与现在密切相关。

  • I've been studying all morning.

  • Why are your hands dirty? — I've been gardening.

  • She's been working here since 2020.

构成形式:have / has + been + 动词-ing

快速公式: 主语 + have / has + been + 动词 -ingI've been waiting. He's been running.

如何构成

在肯定句中,三个部分始终按此顺序排列:

主语 have / has been -ing 形式
I / you / we / they have been working,studying…
he / she / it has been working,studying…
  • I have been waiting for an hour.I*'ve been waiting** for an hour.*
  • She has been studying since this morning.She*'s been studying** since this morning.*
  • They have been travelling all week.

been 不随主语变化;只有 have / has 要和主语保持一致——这一点和现在完成时相同。

-ing 形式的拼写规则:词尾不发音的 -e 去掉(make → making);许多以"辅音字母 + 元音字母 + 辅音字母"结尾、且重读的短动词,要双写词尾辅音字母(run → runningsit → sitting);w、x、y 不双写(fix → fixingplay → playing)。规则与过去进行时完全相同。

三种主要用法

1. 持续至今——"多久了?"

这是 B1 阶段最常见的用法。动作从过去开始,至今仍在进行(或刚刚结束):

  • How long have you been learning English?For three years. / Since 2021.
  • I*'ve been waiting** for this bus for half an hour.*
  • She*'s been living** in London since last September.*

for 接时间段,since 接起始时间点——与现在完成时相同。(如需复习 forsince 的区别,参见现在完成时:for & since。)此处重点在于动作本身在持续进行,而非仅仅表明其发生过。

汉语用「已经……三年了」这样的时间词语表示持续至今的动作,动词本身不变形。英语通常要用现在完成进行时来突出"这三年一直在学":I've been learning English for three years。不要直接套用一般现在时(❌ I learn English for three years)——否则缺少与过去的时间联系。

2. 近期动作解释当下状态

动作刚刚结束或刚发生不久,其影响现在仍然看得见

  • You look tired. — Yes, I*'ve been working** overtime all week.*
  • His hands are muddy. He*'s been digging** in the garden.*
  • We*'ve been running** — that's why we're out of breath.*

这里用进行时,是在提示你:看看眼前的迹象,就能推断刚才一直在发生什么。

3. 近期内反复进行的动作

当某个动作在最近一段时间内反复发生时,常用现在完成进行时:

  • She*'s been calling** me every day this week.*
  • I*'ve been trying** to contact them all morning.*
  • He*'s been sending** me messages for hours.*

否定形式

not 放在 have / hasbeen 之间:

  • I haven't been sleeping well lately.
  • She hasn't been going to the gym.
  • They haven't been working on it very long.

疑问句

在疑问句中,havehas 移到主语前面:

  • Have you been waiting long?
  • Has she been feeling better?
  • How long have they been living here?
  • What have you been doing all afternoon?

简短回答只用 have / has

  • "Have you been working here long?" — "Yes, I have." / "No, I haven't."

状态动词——用现在完成时,不用进行时

有些动词描述状态(而非进行中的动作):know, believe, understand, like, love, hate, need, own, have(表示拥有)。以状态含义使用时,这些动词通常不用进行时;尤其在表达持续时间时,应使用现在完成时:

  • I've been knowing her for years. → ✅ I've known her for years.
  • I've been owning this bag since 2018. → ✅ I've owned / had this bag since 2018.
  • She's been having the car for a year.(拥有含义)→ ✅ She's had the car for a year.

部分动词在具有临时性或动作性含义时可以使用进行时(She's been having headaches),但在其核心状态含义下,表达持续时间时应使用现在完成时。

现在完成时与现在完成进行时的对比

这是 B1 阶段的核心比较:

现在完成时(present perfect simple) 现在完成进行时(present perfect continuous)
侧重点 结果、经历、数量或状态持续时间 进行中的动作、持续时间或当下可见结果
示例 I've written the report.(已完成) I've been writing the report.(可能尚未完成)
示例 She's eaten three biscuits.(数量重要) She's been eating biscuits all morning.(持续动作重要)

一个简单的判断方法:如果强调的是结果、数量或已经完成的事情,就用现在完成时;如果强调的是动作持续了多久,或动作一直在进行,就用现在完成进行时:

  • I*'ve read** four chapters.*(完成了多少章 = 结果)
  • I*'ve been reading** since lunch.*(多久了 = 持续时间)

有些动词两种形式都自然,含义略有不同:I've lived here for years(现在完成时——尤其常见于接近状态动词的情形)vs. I've been living here for years(略强调动作在持续进行)。两者均正确。

关于现在完成时与过去简单时的区别,请参阅现在完成时 vs 过去简单时

常见错误

  • I've been waited for an hour. → ✅ I've been waiting for an hour.(现在完成进行时中,been 后接 -ing 形式)
  • She's been been studying. → ✅ She's been studying.(只用一个 been
  • How long have you been know him? → ✅ How long have you known him?(状态动词 → 现在完成时)
  • I've been learning English since three years. → ✅ I've been learning English for three years.three years 是时间段 → 用 for
  • He have been working all day. → ✅ He has been working all day.hehas
  • I've been writing four chapters.(当数量重要时)→ ✅ I've written four chapters.

自我检测

答案可以是现在完成时或现在完成进行时;也可能需要 forsince

  1. You look exhausted! — I know, I ____ (run) for an hour.
  2. ____ you ever ____ (try) Japanese food?
  3. We ____ (know) each other ____ 2015.
  4. She's still at her desk. How long ____ she ____ (study) today?
  5. He ____ (read) five articles so far this morning.(结果重要)
查看答案
  1. 've been running   2. Havetried(经历 → 现在完成时)  3. have knownsince(状态动词 → 现在完成时)  4. hasbeen studying   5. has read(数量 = 结果 → 现在完成时)

要点总结

  • 现在完成进行时 = have / has + been + 动词-ing——强调动作的持续时间或进行状态。
  • 三种主要用法:某事持续多长时间for / since);近期动作留下的当下可见结果;近期内的重复动作
  • 状态动词know, have, own, like 等)以状态含义使用时不用进行时——表达持续时间用现在完成时(I've known her for years)。
  • 现在完成时 vs 现在完成进行时:前者常强调已完成的结果、数量或状态持续时间;后者强调进行中的动作、持续时间或当下可见结果。
  • 否定:haven't / hasn't been + -ing。疑问句:Have / Has + 主语 + been + -ing?