现在完成时常与for+一段时间,或since+过去时间点/一般过去时态的从句连用。
在表达一个在过去开始而现在仍在继续或刚刚结束的动作时,某些动词既可以用现在完成时,也可以用现在完成进行时。这样的动词有expect,hope,learn,lie,live,look,rain,sleep,sit,snow,stand,stay,study,teach,wait,want,work等.
How long have you learnt English?你学习英语多久了?
How long have you been learning English?(译文同上。)
He has slept for ten hours.他已经睡了十个小时了。
He has been sleeping for ten hours.(译文同上。)
It has snowed for a long time.雪下了好长时间了。
It has been snowing for a long time.(译文同上。)
没有进行式的动词不可能有这样的用法,即现在完成进行时不能代替以下例句中的现在完成时:
They’ve always had a big garden.他们一直有一座大花园。
How long have you known that?你知道这事多久了?
He’s been in hospital since his accident.他从发生事故之后,一直在医院里。
注意:现在完成进行时可以和时间短语连用,也可以不连用,这一点就有别于现在完成时,因为后者与像for six days,since June,never等一些时间短语连用才能表示这类动作。不用这些时间状语时,现在完成时指的是完成了的一个动作。
B 用现在完成时表示的反复的动作,有时可以作为连续的动作用现在完成进行时表示:
I’ve written six letters since breakfast.早饭后我已经写了六封信。
I’ve been writing letters since breakfast.早饭后我一直在写信。
I have knocked five don’t think anyone’s in.
I’ve been don’t think anybody’s in.
注意:现在完成进行时表示一种看来似乎是不间断的动作,所以提到做一件事的次数或一共做了多少事情时,不能用现在完成进行时。
C 用现在完成时表达的单一动作和用现在完成进行时表达的动作是有区别的:
(a)I’ve polished the car.我擦了车。意指这件事已经结束了。
(b) I’ve been polishing the car.我在擦车来着。
意指过去一小时我就是这样度过的,而不一定指动作已结束。注意:用现在完成进行时表示单一动作时,这一动作持续到说话的时间或者接近这一时间为止: