一、现在完成时的两种基本用法
(1) 已完成用法(影响性用法)。该用法的现在完成时表示一个过去发生的动作在过去已经完成,并且这个过去发生并完成的动作对现在有影响或结果,同时说话强调的或感兴趣的就是这个影响或结果:
He has left the city. 他已离开这个城市。(结果:他不在这个城市)
Someone has broken the window. 有人把窗户打破了。(结果:窗户仍破着)
Have you seen my bag? 你看到我的手提包了吗?(结果:你知道它在哪里吗?)
(2) 未完成用法(持续性用法):该用法的现在完成时表示一个过去发生的动作并未在过去完成,而是一直持续到现在,并且有可能继续下去(也可能到此结束):
Have you waited long? 你等了很久吗?
We have been busy this afternoon. 今天下午我们一直很忙。
The temperature has stayed hot this week. 这星期天气一直很热。
【注】除以上用法外,现在完成时还可表示过去的重复动作甚至将来动作:
He has always gone to work by bike. 他总是骑自行车上班。
I’ll go to bed when I’ve finished my homework. 我做完作业后就上床睡觉了。
二、与现在完成时连用的常用词语
能与现在完成时连用词语很多,如副词just, already, yet, before, ever, recently 等,但下面是一些典型而且重要的例子:
(1) since(自从):不管用作介词、连词还是副词, 句子(主句)谓语通常都用现在完成时:
I haven’t seen her since last week. 自上周以来我一直未见过她。
Where have you been since I last saw? 自我上次见到你之后你到哪里去了?
【注】有时可用其他时态的情况,但须注意:
① 对于某些表示状态的动词(如 seem 等),或因语义等方面的原因,有时可能用一般现在时比较现在完成时更合适:
It seems like years since we last met. 我们似乎几年未见面了。
Since when does the $42 plus $5 service charge come to $48? 从什么什候开始42元加5元的服务费等于48元了?
② 若不是指从过去持续到现在,而是指从较远的过去持续到在一个较近的过去,则用过去完成时:
Yesterday he told me that he hadn’t eaten anything since Tuesday. 他昨天告诉我自星期二以来他一直未吃任何东西。(指从星期二至昨天未吃东西)
③ 表示时间长度时,通常用一般现在时代替现在完成时:
It’s ten years since he left here. 他离开这儿已10年了。
(2) so far(到目前为止):
So far there has been no bad news. 到现在为止还没有什么坏消息。
We haven’t had any trouble so far. 到目前为止,我们还没有遇到任何麻烦。