共同点:
现在完成时和一般过去时都表示一个在过去完成的动作。
区别:
①现在完成时强调的是与现在的关系,如对现在产生的结果或影响等,属于现在时范围,谈论的是现在的情况。而一般过去时只表示动作在过去某一时刻发生,不表示和现在的关系,现在情况可能已发生变化。
Who opened the door?
“谁开的门?”
(只强调过去开门这一动作,门现在可能已关上。)
Who has opened the door?
“谁把门开了?”
(强调门现在依然还开着。)
②现在完成时不能与明确的过去时间状语连用,如:three days ago, last year, yesterday, last Sunday, in 2008等等。如句中有以上这些明确的过去时间状语,应用一般过去时。
再有,过去发生的一个动作,如现在情况已经发生的变化,也应用一般过去时。
特别提醒:如果这些过去时间状语前有since,表示“自过去某一时间一直延续到现在”,应用现在完成时。
He finished reading the book the day before yesterday.
他前天读完了这本书。
I put my ruler in my pencil-box, but I can’t find it now.
我把尺子放到文具盒里了,但是我现在找不它了。
My cousin has been in Nanjing since 2009.
我的表弟从2009年起就呆在南京了。
③现在完成时不与when引导的特殊疑问句连用,when后只用一般过去时表示已发生的动作。但现在完成时可与where, why等疑问词连用。如:
Where have you been?
你去过哪里了?
—The train has left.
—When did the train leave?
——火车已经驶离了。
——火车什么时候驶离的?
④since引导的时间状语从句后面用一般过去时,只有前面的主句才用现在完成时。
We have known each other since we came to the school two years ago.
自从两年前来学校,我们就互相认识了。
⑤有些时间状语,如this morning, this month, tonight等,既可以与一般过去时连用,又可以与现在完成时连用,但内涵不同。与一般过去时连用时,表示与“现在”无关,时间已成为过去。而与现在完成时连用,则表示包括“现在”在内。
I saw him this morning.
(时间已不在上午了。)
I have seen him this morning.
(说话时间还是上午。)
He lived in New York for eight years.
(他现在已经不在纽约住了。)
He has lived in New York for eight years.
(他现在还在纽约居住。)