过去完成时、现在完成时与过去时间的关系

对于下面两道从英语语法网摘的两道填空题:
第9题:
You’ll never guess who I met today — myold teacher! We _____ for 20 years.
A.don’tmeet       B. haven’t met
C.hadn’tmet       D. couldn’t meet
答案: 选B。用现在完成时表示从过去持续到现在的一段时间。
(摘自语法连载中“高中英语-语法陷阱题800例-时态”)

英语时态考题专练(有详解)
第8题:
—Tom came back home yesterday.
—Really? Where ________ atall?
A. had he been       B. has he been
C. had he gone       D. has he gone
答案:选 A。因为问的是Tom回来之前到去过某地,故用过去完成时态。
(摘自语法练习全中“英语时态考题专练

我的看法:此两题很相似,都是对话,在对话当中,句中都有一个过去的动作和时间。第9题为 met 和 today,第8题为 came back home 和 yesterday.但第9题为现在完成时,第8题为过去完成时。我开始很困惑,第8题为过去完成时,理由是从came back home 发生的时间(yesterday)开始计算,所以用过去完成时。但第9题不也应该从met发生的时间(today)开始算吗?today在这里不也应该算过去的时间吗?也应该用过去完成时吗?后来,我想,问题也许出在 today上,动作虽然发生过了,但是却是发生在今天,是包括现在的时间,类似的如 thisweek、this year等。比如,第9题,假设说话人是在星期二遇见他的老师,在星期五他这样说:
You’ll never guess who I met this week  — my old teacher! We _____ for 20 years. 在此语境下,我觉得此处空白处应该用现在完成时。
如果将第9题的today换成yesterday,就应选C(过去完成时)。
不知我的想法对否,请专家赐教,谢谢!

请先 登录 后评论

最佳答案 2014-04-30 07:56

你的分析已经很详细了,再作任何补充都显得有点多余!——完全同意你的分析思路!
但严格说来,上面的第 9 题编得不够严谨。虽然句子中有 today,但这个 today 与下面这类 today 的用法是不同的:
I haven’t done anything today. 我今天什么也没做。
I’ve had hardly anything to eat today. 今天我简直没吃什么东西。
面这两句中的 today 指的是今天至“现在”(即说话的时候)为止的一段时间,故连用了现在完成时(符合现在完成时表示“从过去持续到现在”的用法)。但第9题中的 today 显然并没有持续到“现在”(当事人说话的时候),比如假若是上午 8 点见到老师,晚上 10 点才说这话,那么“20年没见到老师”就属于“过去的过去”,就应该用过去完成时。当然,如果说话人认为从上午8点至晚上10点这点时间与“20年”未见面这段时间来比,可以忽略不计,故他用了现在完成时,那是另外一回事。
个人看法,不一定对,仅供参考吧!

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 2 收藏,3406 浏览
  • 董万友 提出于 2014-04-29 22:38

相似问题