(1)用现在完成时表示在一定时段内的变化, 必须用含有继续概念的动词,不能用一时性的动词。
例-24:His father has died for years. [误]
例-25:His father died years ago. [正]
虽然例-24中的时间副词是不确定的,但动词die是一时性的, 没有继续的概念。如果一定要用现在完成时来表达,那么,我们可以改用有继续的概念的形容词dead:
例-26:His father has been dead for years. [正]
或者:
例-27:It has been years since his father died. [正]
(2)现在完成时不能与时间确定的副词连用,像ago, then, yesterday, at that time, last week, last year等。
例-28:He has written a novel last year. [误]
例-29:He wrote a novel last year. [正]
注意:last year 和 in the last year 的意思是不一样的。Last year 表示去年,一个确定的时间。In the last year 表示一个时间范围,从365天前直到现在。
例-30:I went to Beijing last year. 去年我到北京了。[现在是2006,我2005年到北京,确切的年份,用过去时]
例-31:I have been to Beijing in the last year. 去年我到过北京。[从365天前到现在的某个时 间,我到北京去过至少一次,确切时间没有指明,用现在完成时]
(3)现在完成时不与疑问副词when连用。
例-32:When have you come? [误]
例-33:When did you come? [正]
当when不是指时间的疑问副词,而是肯定修辞疑问句表否定时,可以与现在完成时连用:
例-34:When have I told you this? [正] 我什么时候告诉过你这些话?
上句实际上是一个否定句:I don’t think I have ever told you this.
(4)过去时与现在完成时的区别
因说话时的状态不同,所用的时态也不同,请看以下四个例子:
例-35:I bought a house ten years ago. 十年前,我买了栋房子。
这句话是过去时,表示我十年前买了栋房子,现在是否还拥有这栋房子就说不定了。
例-36:I have bought a house.我已经买了栋房子。
这句话是现在完成时,表示我已经买了栋房子,并且现在仍然拥有这栋房子。
例-37:I lived in Boston for two years. 我在波士顿住过两年。
这句话是过去时,表示我以前在波士顿住过两年,后来可能不住在波士顿了。
例-38:I have lived in Boston for two years. 我在波士顿住了两年了。
这句话是现在完成时,表示我已经在波士顿住两年了,现在仍然住在波士顿。
因说话时间不同,描述同一事件的时态也不同,请看下面两个例句:
例-39:I have written two letters this morning. 我上午写了两封信。
这句话是上午说的。
例-40:I wrote two letters this morning. 我上午写了两封信。
这句话是下午或晚上说的。