完成时家族:现在完成进行时与过去完成时
约 14 分钟
KET 只考现在完成时。PET 新增两个成员,把「时间线」补全。
一、现在完成进行时:have/has been + 动词ing
用来强调「动作从过去持续到现在,而且还在继续」。
- I have been waiting for an hour.(等了一小时,还在等)
- She has been learning Chinese since 2020.(一直在学)
- It has been raining all day.(下了一整天,现在还在下)
和现在完成时的区别(这是考点):
| 现在完成时 | 现在完成进行时 | |
|---|---|---|
| 强调 | 结果 | 过程和持续 |
| 例 | I have read three books.(读完了三本) | I have been reading all morning.(读了一上午) |
| 例 | She has written a letter.(信写好了) | She has been writing a letter.(一直在写,可能没写完) |
判断口诀:看重「做完没有」用完成时,看重「做了多久」用完成进行时。
典型信号词:for、since、all day、all morning、recently、lately
注意:状态动词(know、like、be、have 表「有」)不用进行形式——
- I have known him for years.(对)
- I have been knowing him.(错)
二、过去完成时:had + 过去分词
用来表示「过去的过去」——在过去某个时间点之前就已经完成的事。
When I arrived, the film had already started.
(我到的时候,电影在那之前就开始了)
时间线:电影开始 → 我到达 → 现在
过去完成时永远和另一个过去时间同时出现。单独一句 I had eaten. 是不成立的——必须有一个参照点。
常见搭配:
| 句型 | 例 |
|---|---|
| By the time + 过去时, 主句用过去完成 | By the time he came, we had finished. |
| When + 过去时, 另一件事用过去完成 | When she arrived, the train had left. |
| before / after | He had left before I arrived. |
| 表示「原本以为」 | I thought you had gone home. |
after 和 before 的特殊性:这两个词本身已经表明了先后,所以用不用过去完成时都可以:
- After he had finished / finished his homework, he went out.(都对)
三、三种「完成」的对比
| 时态 | 参照点 | 例 |
|---|---|---|
| 现在完成 | 现在 | I have finished.(现在做完了) |
| 现在完成进行 | 现在,强调过程 | I have been working for hours. |
| 过去完成 | 过去某一刻 | I had finished before he came. |
四、PET 里怎么考
- 阅读 Part 6:填 had、been、have
- 听力:讲述经历时大量出现
- 写作 Part 2 故事:过去完成时是讲故事的利器——用它交代「之前发生了什么」,故事立刻有层次
When Tom got to the station, the train had already left. He had forgotten to set his alarm.
在故事里用一次过去完成时,Language 分会明显提高。
练习:填空
- I ____ (wait) here for two hours and she still hasn't come.
- When we arrived at the cinema, the film ____ (already begin).
- She ____ (learn) English since she was six.
- By the time I got home, my parents ____ (go) to bed.
- It ____ (rain) all morning — look at the streets!
小纸条
现在完成时和现在完成进行时怎么区分?过去完成时为什么不能单独使用?
登录 后可看答案