现在完成时与过去一般时的区别
现在完成时和过去一般时都表示在过去完成的动作,但现在完成时强调这一动作与现在的关系,如对现在产生的结果、影响等,而过去一般时则表示动作发生在过去,一般不表示和现在的关系。试比较:
1)I have lost my pen.我把钢笔丢了。(意即还没找到,现在我没有笔用。)
She lost her pen yes today.她昨天把笔丢了。(笔是昨天丢的,现在找到与否,没有说明。)
2)I have been to the Agricultural Exhibition.我看过这个农业展览会。(强调我知道它的内容)
I went to the Agricultural Exhibition last week.我上周参观了这个农业展览会。(只说明我上周参观过展览会这件事)
3) Who has opened the door? 谁把门开了?(现在门还开着)
Who opened the door? 谁开的门?(指过去,与现在无关。现在门是关着还是开着,没有说明。)
4) A:Have you had your lunch? 你吃过年饭没有?(意即你现在不饿吗?)
B:Yes,I have.吃了。(意即我现在饱了,不要再吃了。)
A:When did you have it 你什么时候吃的?(说话人感兴趣的是"吃"这一动作发生在什么时候。)
B:I had it about half an hour ago.我是大约半小时前吃的。
现在完成时的其他用法
1)还可表示动作发生在过去,并且一直延续到现在,甚至还可能继续延续下去。这时常和since所引导的短语或从句或for引导的短语连用(for有时可以省去)。
How long have you been in Beijing ? -I have been in Beijing for four years.你在北京呆了多久?--我在北京呆了四年。
Isaac's father has been a school teacher since 1968. 艾萨克的父亲从一九六八年以来就当教师。
We haven't had a vacation for a long time.我们好久没放假了。
Three years have passed since we left school.我们毕业已经三年了。
[注]但在下面的句子中,主句的谓语动词可以用现在一般时。如:
It is three years since I began to work on the state farm.我在国营农场工作已经三年了。(美国英语用has been,下例同此)
It's a long time since I saw you last.好久没见了。
2)在条件、时间状语从句中表示将来完成的动作。
I'll go with you when I have finished my home work,我做完作业后就和你一块去。
We'll wait here until you have Written the letter.我们将在这里等你写完信。
Perhaps I'll know more English after I have learnt it for two years.我学完两午后,懂的英语或许就会多些了。