你已经学过现在完成时(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 + 动词 -ing → I'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 → running,sit → sitting);w、x、y 不双写(fix → fixing,play → 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 接起始时间点——与现在完成时相同。(如需复习 for 与 since 的区别,参见现在完成时: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 / has 和 been 之间:
- I haven't been sleeping well lately.
- She hasn't been going to the gym.
- They haven't been working on it very long.
疑问句
在疑问句中,have 或 has 移到主语前面:
- 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.(he → has)
- ❌ I've been writing four chapters.(当数量重要时)→ ✅ I've written four chapters.
自我检测
答案可以是现在完成时或现在完成进行时;也可能需要 for 或 since:
- You look exhausted! — I know, I ____ (run) for an hour.
- ____ you ever ____ (try) Japanese food?
- We ____ (know) each other ____ 2015.
- She's still at her desk. How long ____ she ____ (study) today?
- He ____ (read) five articles so far this morning.(结果重要)
查看答案
- 've been running 2. Have … tried(经历 → 现在完成时) 3. have known … since(状态动词 → 现在完成时) 4. has … been 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?