现在完成时 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-10-06 00:48