全部语法课

第 49 课 · 第 4 阶段: 时态与情态动词

过去完成时

中级

Past perfect

构成与用法

had + 过去分词 — 在过去另一时刻之前完成的动作

1.形式

过去完成时 = had + V3,所有主语都一样。缩写形式:I'd、she'd、they'd;否定式 hadn't。

所有主语
肯定式She had left. / She'd left.
否定式She hadn't left.
疑问式Had she left?
简略回答Yes, she had. / No, she hadn't.

'd 可能是 had,也可能是 would。看后面一个词:'d + V3 = had(I'd forgotten);'d + 动词原形 = would(I'd forget)。另外 'd better = had better。

2.什么时候用

当你已经在讲过去的事,又想再往前推一步时,用过去完成时:这件事发生在过去另一个时刻或事件之前。

1. 发生在过去另一件事之前的事

  • When I got to the station, the train had already left.

    我到车站时,火车已经开走了。

  • I couldn't pay because I'd left my wallet at home.

    我付不了钱,因为我把钱包落在家里了。

2. 和 by the time、before、already 连用:在那个时间点之前已经完成

  • By the time Mum got home, we had cleaned the whole house.

    妈妈到家的时候,我们已经把整个房子打扫干净了。

  • The bakery had sold out of bread before I got there.

    我还没到,面包店的面包就已经卖完了。

3. 到过去某一时刻为止的经历——had never / had ever … before

  • I'd never seen snow until I went to Sapa last winter.

    去年冬天去沙坝之前,我从来没见过雪。

  • Had you met him before the wedding?

    婚礼之前你见过他吗?

4. 转述过去的想法或话语:realised、knew、found out、said、told…(见“间接引语”一课)

  • I suddenly realised I hadn't turned off the stove.

    我突然意识到我没关炉子。

  • Tom said he had never eaten durian.

    汤姆说他从来没吃过榴莲。(他的原话:I have never eaten…)

3.When 后面:一般过去时还是过去完成时?

在 when 后面,换个时态,两件事的先后顺序就变了:

  • When we arrived, the party started.

    我们到的时候,派对开始了。(我们先到,然后派对开始)

  • When we arrived, the party had started.

    我们到的时候,派对已经开始了。(我们到之前派对就开始了)

  • When I got home, Mum cooked dinner.

    我回到家,妈妈就做晚饭了。(我先到家,然后她做饭)

  • When I got home, Mum had cooked dinner.

    我回到家时,妈妈已经做好晚饭了。(我到家时晚饭已经做好了)

先发生的事用 had + V3,后发生的事用一般过去时。不要把 had 放在后发生的事上:When I had arrived, the meeting already started ✗ → When I arrived, the meeting had already started。

4.什么时候不需要用

  • 按发生的顺序讲事情 → 用一般过去时就够了:I got up, had a shower and went to work.
  • 用 after、before、as soon as 时先后顺序已经很清楚,所以用一般过去时也可以:After I finished / After I had finished my homework, I went out. 想强调第一个动作已经完成时,用 had + V3。
  • 不要因为事情发生在很久以前就用过去完成时:I was born in 2000.
  • After she had finished the report, she sent it to her manager.

    她写完报告后,把它发给了经理。(after + had V3 或 after + 一般过去时:都可以)

5.和现在完成时比较,以及相关形式

现在完成时算到现在为止;过去完成时算到过去某一时刻为止。

  • I'm not hungry. I've just eaten.

    我不饿,我刚吃过。(到现在为止)

  • I wasn't hungry. I'd just eaten.

    我当时不饿,我刚吃过。(到那时为止)

  • had been + -ing:一直持续到过去某一时刻的活动——We had been walking for three hours when we found a café. 见“过去完成进行时”一课。
  • had been + V3(被动):When we came back, our bags had been stolen.
  • had + V3 也用来表示与过去事实相反:If I had known, I would have helped(见“第三条件句”一课);I wish I had studied harder.

6.常见错误

  • When I arrived, everyone has gone home.

    When I arrived, everyone had gone home.

    参照点在过去(arrived)→ 用 had,不用 has。

  • I hadn't saw him for years.

    I hadn't seen him for years.

    had + V3。

  • When I had arrived, the meeting already started.

    When I arrived, the meeting had already started.

    had + V3 用在先发生的事上(会议开始)。

  • The children were tired because they had swam all afternoon.

    The children were tired because they had swum all afternoon.

    swim – swam – swum:had + V3。

  • She told me she has lost her phone the day before.

    She told me she had lost her phone the day before.

    转述过去说的话 → 时态往后退:has lost → had lost。

  • I had been born in 2000.

    I was born in 2000.

    不要因为是很久以前的事就用过去完成时。

例句

  • When I got to the station, the train had already left.
  • Lan couldn't get into her flat because she had left her keys at the office.
  • By the time I turned on the TV, Vietnam had scored two goals.
  • I didn't recognise Hoa at the party because she had changed so much.
AI 正在听...•App Store 和 Google Play 评分 4.7/5

和 AI 说英语 全天 24 小时

立即下载应用 — 实时发音评分、自然对话、像真人老师一样纠正。

AI 发音评分即时反馈自然对话