I have been waiting for an hour.
不是 I wait,不是 I waited,也不是 I have waited。这个时态只有一个任务:把一个从过去开始的动作和现在这一刻联系起来,并强调它的持续时长。
构成方式
have / has been + 动词**-ing**
| 主语 | 形式 |
|---|---|
| I, you, we, they | have been working |
| he, she, it | has been working |
否定句:She hasn't been sleeping well. 疑问句:How long have you been learning English? 缩写形式:I've been · he's been · they've been
For 和 since
这两个词几乎承担了全部的含义,而混淆它们是一个经典的错误。
- for + 时间段:for an hour, for three years, for ages
- since + 起始时间点:since Monday, since 2019, since I was ten
I've been living here for six years. · I've been living here since 2019.
这两句话描述的是同样的六年。For 衡量的是时间段的长度,since 说明的是它从哪里开始。
与普通现在完成时的对比
这两种时态很接近,区别在于关注点不同。
| 关注点 | |
|---|---|
| I have painted the kitchen. | 结果——已经刷好了,颜色是新的 |
| I have been painting the kitchen. | 过程——所以我浑身都是油漆 |
- She has written three emails. —— 现在有三封写好的邮件。
- She has been writing emails all morning. —— 她整个上午都在这样度过。
一个实用的判断标准:如果可以数出具体数量,通常用简单的现在完成时(I've read two books)。如果你衡量的是时间长度,而不是计算结果的数量,就用进行时(I've been reading all day)。
动作可能还在继续,也可能刚刚结束——两种理解都成立。I've been running 既可以表示「而且我现在还在跑」,也可以表示「所以我现在气喘吁吁」。
用来解释当下的情况
这正是这个时态在日常对话中特别有用的地方。某件事此刻显然是真的,而进行时能解释这是为什么。
- Your eyes are red. Have you been crying?
- The streets are wet. It has been raining.
- I'm exhausted — I**'ve been working** since six.
状态动词依然保持简单形式
其他时态中不加 -ing 的那些动词,在这个时态里同样不加:
know, be, have(表示「拥有」), like, believe, belong
- ❌ I have been knowing her for years.
- ✅ I have known her for years.
这一点很重要,因为「多久」这类问题特别容易让人倾向于用进行时——而 know、be、have 恰恰就是人们最想搭配这类问题使用的动词。
- ✅ I**'ve been** here for an hour.(而不是「I've been being here」)
- ✅ We**'ve had** this car since 2020.
对话中的用法
遇到一位老朋友
A: You look well. How long have you been living in Berlin?
B: Since March, so about six months. I've been learning German, but it's slow.
A: You've always been good at languages.
B: I've been saying that for years and nobody believes me.
Have been living、have been learning、have been saying 衡量的是延续到现在的一段时间。Have always been 保持简单形式,因为 be 是一个状态动词。
自我检测
下面的测验专门练习 for/since 的区别、结果与过程的对比,以及那些永远不加 -ing 的状态动词。