现在完成时 vs 过去完成时

一句话判据:两个时态的结构和用法几乎一样,唯一区别是参照点——参照点是”现在”(说话时刻)用现在完成时,参照点是”过去某一时刻”(句中另有过去时间或过去动作)用过去完成时。检验法:能否在句首补一句”当时/那天……”?能补 → 过去完成时。

一、对照表

维度 现在完成时 过去完成时
参照点 现在(说话时刻) 过去的某一时刻(”过去的过去”)
公式 have/has + 过去分词 had + 过去分词
两种用法 已完成(影响现在)/未完成(持续到现在) 已完成(影响那一过去时刻)/未完成(持续到那一过去时刻)
常连用标志 since, so far, already, yet, ever 主句/上下文中已有的过去时动作或过去时间
说话立场 站在现在回头看 站在过去回头看

二、例句对照

现在完成时: - He has lived here since he came here.(自从他来到这里,他就一直住在这儿。) - We haven’t heard from her since she left.(自从她离开后,我们一直未收到她的来信。) - I have been at his bedside ever since he became ill.(自从他生病以来,我一直守在他床边。)

过去完成时: - I met Jim last week. We hadn’t met each other for about twenty years since we left Japan.(我上周见到了吉姆;自从离开日本后,我们已有约二十年没见过面。) - He had left when I arrived.(我到达时他已经离开了。) - Yesterday he told me that he hadn’t eaten anything since Tuesday.(他昨天告诉我,自星期二以来他一直没吃东西。)

三、易错陷阱

  • 母语干扰点(见 since 就用现在完成时):✗ I met Jim last week. We haven’t met each other for about twenty years since we left Japan. → ✓ …We hadn’t met each other…(主句已有”我上周见到他”这一过去参照点,”二十年没见”须推到”过去的过去”)
  • 母语干扰点(same since, 不同参照点)对比:He hasn’t eaten anything since Tuesday.(到现在没吃)/Yesterday he told me that he hadn’t eaten anything since Tuesday.(到昨天没吃)
  • 母语干扰点(when 从句的先后):✗ When I arrived, Anne left.(若想表示”没见到她”)→ ✓ When I arrived, Anne had left.(had left 表示她在我到达之前就走了;用 left 则表示我到达时她才走,两个动作先后发生)

四、记忆口诀

since 不变、参照点变:现在参照用 have done,过去参照用 had done。

五、相关链接

现在完成时、过去完成时、一般过去时 vs 现在完成时、一般过去时 vs 过去完成时、时态一致

六、来源

  • 语法体系/英语语法网专栏/动词时态/01291-现在完成时还是过去完成时.md
  • 语法体系/英语语法网专栏/动词时态/00187-过去完成时用法详说.md
  • 语法体系/英语语法网专栏/动词时态/00186-现在完成时用法详说.md
作者:admin  创建时间:2026-09-11 18:05
最后编辑:admin  更新时间:2026-10-06 00:48