
过去完成进行时是12种时态里使用频率最低的之一,但它绝不是“可有可无”的边角角色。这个时态其实有着非常独特且不可替代的功能,能够精准地表达出“动作在过去某一时点之前,一直持续进行”的状态。可以把它看作是“过去完成时”和“过去进行时”的结合体——它既拥有“完成时”对时间先后的把控力,又带有“进行时”对过程、持续性的强调。简单来说,过去完成进行时最关注的是“动作的持续过程”,而不是最终是否完成了某个结果。
假如你下班回家,发现地板很干净。你问家人,他们说“I had been cleaning the floor for two hours before you got home.”(你回家前我一直在打扫地板,打了整整两个小时。)这里的“had been cleaning”就强调了“打扫”这个动作在你回家之前,从更早的时候就一直持续在进行,累积了很长时间。它比单一的过去完成时(比如“I had cleaned the floor”)多了一层“过程”的意味,更让人感受到动作的连续性和投入。
掌握过去完成进行时最关键的一点,是要理解它用来描述过去某个时间前,“一直在进行中的动作”或状态,尤其适用于强调动作的持续、反复、累积等特征。当你遇到需要突出这种“持续过程”含义的表达,过去完成进行时就是你最得力的工具。希望通过这一章的讲解和练习,你能够真正读懂、用好这个看似冷门、实则强大的时态。
过去完成进行时的句型公式为:had been + 动词 -ing。这个结构有三个关键词:had、been 和动词的现在分词(-ing 形式)。
I had been working. 我一直在工作。
She had been waiting. 她一直在等待。
They had been studying. 他们一直在学习。
He had been running. 他一直在跑步。
可以看到,主语换成 I、She、They、He,had been 都没有变,只是在后面加上不同的动词 -ing 形式。
也可以构造否定句:I had not been working.(我一直都没在工作。)
或者疑问句:Had you been running?(你刚才一直在跑步吗?)
让我们对比一下与过去完成时的结构和含义,体会它们在表达时间关系上的不同“站位”:
例如:
过去完成进行时主要用来描述:在过去某个确定的时间点(例如故事主线发生的时间点)之前,某个动作连续地进行了一段时间,通常包含“累积”“持续”“重复”的意味。
它和现在完成进行时(have/has been + -ing)的关系类比如下:
She was exhausted because she had been working for twelve hours straight.
她精疲力竭,因为她已经连续工作了十二个小时。
“她精疲力竭(was exhausted)”是故事发生的时间点(过去),而“她已经连续工作了十二个小时(had been working)”则是造成精疲力竭的原因,这个动作是从更早的过去持续到现在这个时间点。
When I finally arrived at the café, my friend had been waiting for over an hour.
我终于到了咖啡馆的时候,我朋友已经等了超过一个小时了。
这里,“我到达咖啡馆(arrived)”是主要的过去动作,而“朋友一直在等待(had been waiting for over an hour)”强调,他的等待动作是从更早之前开始的,跨越了一段时间,直到我到达为止。这样就突出了动作的累积性和持续过程,比一般单纯的过去时或过去完成时都更生动具体。
总结:
你可以这样灵活地运用过去完成进行时,让英语表达更生动、逻辑更清晰。

过去完成进行时(Past Perfect Continuous)和过去完成时(Past Perfect)的核心区别,其实就像现在完成进行时(Present Perfect Continuous)和现在完成时(Present Perfect)的区别一样,两者在英文里的逻辑是完全对应和平行的。
过去完成时(had + 过去分词)
过去完成进行时(had been + -ing)
She had read the book before the exam. 她在考试前已经把那本书读完了。
(过去完成时——书已经读完了,强调完成结果)
说明:这里的意思是,考试之前这本书已经读“完”了,动作已经结束。读书的行为属于过去更早完成,并且结果在“考试之前”已经产生。
She had been reading the book for two hours when I called. 我打电话的时候,她已经读了两个小时的书了
(过去完成进行时——一直在读,强调持续过程)
说明:这里强调的是“她一直在读书”,而不是“读完了”。过程持续了两个小时,到打电话为止。我们不知道她是否读完了,但我们强调的是行动的“总时长”与“持续性”。
过去完成时突出“结果”:
过去完成进行时突出“过程/持续”:
这样的对比能帮助我们在实际表达时更自然地区分何时表达“动作完成的终点”(结果),何时关注“动作经历的过程”。
记住这个规律:
无论现在完成 vs 现在完成进行,还是过去完成 vs 过去完成进行,只要有 -ing,就是强调过程,没有 -ing 就是强调结果。这种规律在英语四大完成类时态中是一贯适用的,非常值得牢记。
By the time the train arrived, we had waited for 30 minutes.
到火车到来时,我们已经等了30分钟。(关注“已经等完”——结果)
By the time the train arrived, we had been waiting for 30 minutes.
到火车到来时,我们一直在等,总共等了30分钟。(突出这段等待的过程和持续感)
Jane was tired because she had worked all day.
Jane 累了,因为她一整天已经工作完了。(突出“整天都完成了”——结果)
Jane was tired because she had been working all day.
Jane 累了,因为她一整天都在工作。(突出“不断地工作着”——过程)
下次遇到过去完成时和过去完成进行时的选择时,先想清楚你想强调“已经完成的结果”,还是“持续的过程”——选择合适的表达,英语水平马上提升一个档次!
过去完成进行时最典型的用途,是为过去的某个结果或状态提供“持续过程”层面的解释。这也是英语母语者最自然会用过去完成进行时的场合。常常用来说明某个“结果”发生的背景——即一直以来的行为或经历造成了现在的状态。
His hands were covered in paint because he had been decorating his apartment all day.
他双手沾满了颜料,因为他整天都在装修自己的公寓。
分析:这句话强调“decorating”作为一个持续进行的动作,对“hands were covered in paint”这个结果形成了解释和因果关系。
She was exhausted because she had been running for over an hour.
她非常累,因为她已经持续跑了一个多小时。
注意:这里强调的不是“她跑完了”,而是“她持续跑步的过程导致了她很累”。
The children were very hungry when they got home — they had been playing outside for hours without a break.
孩子们回到家的时候非常饿——他们已经在外面玩了好几个小时没有休息。
上述例句都体现了“状态A(累/饿)出现,是因为持续进行中的动作B”。
当需要说明“在某件事发生之前,某个动作已经持续进行了多久”时,过去完成进行时加上时间状语(for + 时间段)是最精确的表达。这样句型非常适合突出动作发生的“总时长”和“过程”。
I had been living in that city for five years when I decided to move abroad.
我决定出国的时候,已经在那座城市住了五年了。
He had been waiting at the station for over two hours before the train finally arrived.
火车终于到达前,他已经在车站等了两个多小时。
The couple had been dating for three years before they finally got engaged.
这对情侣恋爱了三年才终于订婚。
同样你还可以这样表达:
We had been discussing the plan for weeks before a final decision was made.
在最终做出决定之前,我们已经讨论了这个方案好几周了。
这些句型在讲述事件背景、叙事、写作作文时非常实用。
和所有进行时一样,状态动词(例如 know、like、understand、believe、belong、own、love、hate、prefer、mean、remember 等)不能用于过去完成进行时。这些词通常描述情感、认知、归属、拥有等静态状态,而不是动态、可持续的过程,所以不能与“-ing”进行时连用。常见的状态动词还包括:contain, consist, include, need, want, appear, seem 等等。
如果你想表达“在某个过去的时间点之前,已经认识某人有多久了”,应当使用过去完成时,而不是过去完成进行时。
I had known her for ten years before we lost touch.(✓ 过去完成时——know 是状态动词)
在我们失去联系之前,我认识她已经十年了。
这种用法才是正确的。如果说:
✗ “I had been knowing her for ten years before we lost touch.”
这是错误的,因为 know 不是可持续动作,不适合用进行时表达。
再比如表达“拥有”,只能说:
✓ “He had owned that house for twenty years.”
而不能说:
✗ “He had been owning that house for twenty years.”
如果你想强调某种“经历的持续作用”,需要换用对应的动态动词。例如,想表达 love 的持续,可以说 “had been in love with”,而不是 “had been loving”。
同样的,prefer、believe、own 等不表达动态过程,不可用于进行时。例如:
✗ She had been believing the story for years.
✓ She had believed the story for years.

过去完成进行时在日常口语中的使用频率其实并不高,更多地见于书面叙述、小说、正式报告或者严谨表达。英语母语者在日常交流中,常常用更简单的时态表达近似的含义,比如过去进行时或者过去完成时,有时不会严格区分这三者,但在写作、描述背景或强调“持续过程”时,过去完成进行时能让表达更清晰、更有层次。
A:Why did she seem so upset at the meeting?
她在会议上为什么看起来那么沮丧?
B:She had been dealing with a difficult client all morning — it really wore her out.
她整个上午都在处理一个难缠的客户,真的把她搞垮了。
这里 had been dealing with 就是过去完成进行时,精确强调了“持续处理客户”这个过程对后续状态的影响。
如果换成过去进行时 “She was dealing with a difficult client all morning.”,重点没那么突出“这个过程结束了、因此导致当下状态”。如果换成过去完成时 “She had dealt with a difficult client.”,只表达了“完成”而不突出“过程的持续性”。
日常对话中,这几种说法都能表达基本的意思,但用过去完成进行时,就能让描述更精准和细腻,尤其是叙事、写作、考试作文等场景推荐合理使用。
小结:
补充练习:
请判断以下句子是否正确,若不正确请改正为标准表达——
解析:
第一题(选择题)
知识点:过去完成进行时的构成
下面哪个句子正确使用了过去完成进行时?
A. She had been worked at the company for ten years before she was promoted.
B. They had been play football when it started to rain.
C. I had been studying for three hours before I took a break.
D. He had being waited for two hours when she finally showed up.
答案是 C。“I had been studying for three hours before I took a break.”——had been + studying(-ing 形式),构成完全正确;for three hours 说明持续时长,搭配自然。A 中 worked 应该是 -ing 形式 working(✗);B 中 play 应该是 playing(✗);D 中 being 应该是 been(✗)。
第二题(选择题)
知识点:过去完成时与过去完成进行时的区别
选出能最清楚体现“强调持续过程而非完成结果”的句子:
A. She had written the report by noon.
B. She had been writing the report for three hours when her computer crashed.
C. She had already sent the report when he asked.
D. She had written three reports that month.
答案是 B。“She had been writing the report for three hours when her computer crashed.”——had been writing 强调“持续写了三个小时”这个过程,然后被电脑崩溃打断,重点在过程的持续性。A 中 had written 强调“写完了”的结果(✓ 是过去完成时);C 和 D 同样强调完成或结果(✓ 是过去完成时)——但题目要求的是“过程”,所以 B 最符合。
第三题(选择题)
知识点:状态动词不用进行时
以下哪个句子使用了错误的时态?
A. I had known him for years before we became close friends.
B. They had been waiting outside for an hour when the doors opened.
C. She had been understanding the problem for a long time before she solved it.
D. He had been training hard for months before the competition.
答案是 C。“She had been understanding the problem”——understand 是状态动词,不能用进行体,应该改为“She had understood the problem for a long time before she solved it.”(✗)A 中 know 是状态动词,正确使用了过去完成时 had known(✓);B 和 D 中的 wait 和 train 是动作动词,正确使用了过去完成进行时(✓)。
第四题(情景问答)
知识点:用过去完成进行时解释过去的状态
描述一个场景:你和朋友约好下午3点见面,但你3点半才到,见到朋友时他/她看起来有些不耐烦。请用过去完成进行时说明朋友当时的状态,并用一般过去时描述你到达后的情况。
参考回答:When I finally got there at 3:30, my friend had been waiting for half an hour and was visibly annoyed. I apologized immediately and explained that my bus had been delayed by the traffic.(我终于在3点半到达的时候,我朋友已经等了半个小时,明显有些不高兴了。我立刻道了歉,解释说我的公交车被堵车耽误了。)had been waiting 是过去完成进行时,描述“等了半小时”这个持续的过程;got、was、apologized、explained 是一般过去时,描述后续发生的事情。
第五题(情景问答)
知识点:区分过去完成时(结果)和过去完成进行时(过程)
请分别用过去完成时和过去完成进行时各写一个句子,描述同一件事(例如“准备一场演讲”),并解释两句话各自强调的重点有什么不同。
过去完成时:“By the time the event started, she had prepared her entire speech.”(活动开始之前,她已经把整场演讲准备好了。)——强调“准备完成”这个结果,重点是“完成了”这件事本身。过去完成进行时:“She had been preparing her speech for weeks when the event finally arrived.”(活动终于到来的时候,她已经准备了好几周的演讲。)——强调“准备了好几周”这个持续的过程,重点是时间投入和努力的过程,而不是“是否完成”。两句话描述的是同一件事,但一句聚焦结果(完成了),一句聚焦过程(花了多长时间一直在准备)。