现在完成时和一般过去时的区别
1.现在完成时和一般过去时都表示在过去完成的动作,但现在完成时强调这一动作与现在的关系,如对现在产生的结果、影响等,而一般过去时则表示动作发生在过去,一般不表示和现在的关系.试比较:
① Who has opened the door?谁把门开了?(现在门还开着)
Who opened the door?谁开的门?(指过去,与现在无关.现在门是关着还是开着,没有说明.)
② — Have you had your lunch?你吃过午饭没有?(意即你现在不饿吗?)
— Yes,I have.吃了.(意即我现在饱了,不要再吃了.)
— When did you have it?你什么时候吃的?(说话人感兴趣的是“吃”这一动作发生在什么时候.)
2.一般过去时常与具体的时间状语连用,而现在完成时通常与模糊的时间状语连用,或无时间状语.
一般过去时的时间状语:
yesterday,once,last week,...ago,in
1980,in October,just now等具体的时间状语.
现在完成时的时间状语:
for,since,so far,ever,never,just,yet,
till/ until,up to now,in past/last years,always等不确定的时间状语.
共同的时间状语:
this morning,tonight,this April,now,ever,before,already,recently,lately等.
3.现在完成时表示持续到现在的动作或状态,动词一般是延续性的,如 live,teach,learn,work,study,know等.
过去时常用的非延续性动词有come,go,leave,start,die,finish,become,get married等.eg.
① I saw this film yesterday.(强调看的动作发生过了.)
I have seen this film.(强调对现在的影响,电影的内容已经知道了.)
② He has been in the League for three years.(在团内的状态可延续)
He has been a League member for three years.(是团员的状态可持续)
He joined the League three years ago.(三年前入团,joined为短暂行为.)
句子中如有一般过去时的时间状语(如yesterday,last week,in 1960)时,不能使用现在完成时,要用过去时.
(错) Tom has written a letter to his parents last night.
(对) Tom wrote a letter to his parents last night.