关键区别是时间不同,一个是现在完成,一个是过去完成。现在完成指现在,就是现在时间已经完成,所以一定是现在,过去完成才是过去。现在完成时如:I have had breakfast, 过去完成时如:I had had breakfast.
从时态的作用时间上,我们就已经可以区分这两个时态了,即:
动作或状态发生在过去的,其作用仅影响过去的,用一般过去时态;
动作或状态发生在过去的,其作用影响到现在的;用现在完成时态;
现在完成时态的动作或状态虽然是过去发生的,虽然过去了,但是其作用影响了现在,所以现在完成时态用have/has(现在时间) 作为其时间助动词,生拉硬拽的把这个过去的动作状态的效果拉伸至现在。
现在完成时态和现在很亲密,现在你应该明白了为什么新闻中播报某人离世一般都用现在完成时态了吧!
Jack has died from cancer, aged 79.
杰克因癌症去世了,享年79岁。
「一般过去时」和「现在完成时」描述的都是过去发生的某动作,区别在于说话者主观上是否强调这个动作对现在的影响。所以一般情况下就用「一般过去时」,要想强调这种影响才用「现在完成时」。同理,「过去完成时」则是发生在过去的过去的动作,强调对过去有影响。
误区1:一般过去时发生在比较远的过去,现在完成时发生在比较近的过去
其实一般过去时和现在完成时都是描述发生在过去的动作,至于这个过去距离现在到底有多远多近,则是不确定的。即使是在同一个句子中同时使用了这两种时态,也不能说现在完成时就一定比一般过去时更近,一个反例足矣:The universe has cooled down since the Big Bang 13.7 billion years ago, but life appeared on Earth rather recently, some 3.8 billion years ago. 宇宙尺度,大爆炸在前,生命出现在后。
误区2:现在完成时描述的是完成的动作
因为有完成两个字在,所以大家就觉得现在完成时描述的动作一定是完成了的。其实不然,一个反例足矣:He's lived in Shanghai since 1960. 这句话的含义是他从1960年开始在上海居住,至于live这个动作是否完成,也就是他现在是否已经搬走,则是不得而知的。可能他已经搬走了,那么live这个动作算是完成了;但也有可能他还住在这里,那么live这个动作则没有完成。
反过来讲,一般过去时所描述的动作也可以是完成了的。比如:He turned off the light. 关灯这个动作很明显已经完成了。其实一般来说可以这样讲:瞬时动作,一般都是完成了的,比如He turned off the light. 和 He's turned off the light. 都是完成了的动作;而持续动作是否完成,则往往是不得而知的,要根据上下文来判断,比如He lived in Shanghai. 和 He's lived in Shanghai. 都是不知道他是否已经搬走了的。所以,笼统地可以说:一般过去时和现在完成时的区别根本不在于动作是否完成。
那么一般过去时和现在完成时的区别到底是什么呢?正解是:区别在于是否对现在有影响,或者准确地说:区别在于说话者是否强调对现在的影响。客观地说,一个过去发生的动作,不论使用一般过去时还是现在完成时,都可能对现在有影响,但是选用一般过去时还是现在完成时却是说话者主观的选择。所谓是否强调就是纯粹主观的事情,而且强调往往是要暗示一些别的意义,这就是有影响的真正内涵。所以一般过去时是一般描述,现在完成时是强调影响。
一般描述 Hitler’s army invaded Russia in 1941.
失真情况(即过去这样现在不这样了,这是对比过去和现在,并非过去对现在的影响)
Shanghai was a small fishing village.
习惯动作(参考一般现在时表示习惯动作)
I got up at six every day in high school.