现在完成时强调动作的完成,而现在完成进行时强调动作的延续,因此,表示动作的完成,只能用现在完成时,而不能用现在完成进行时。如:
He has changed his idea. 他改变了想法。
在表示动作的延续时,虽然既可用现在完成时,也可用现在完成进行时,但现在完成进行时强调动作的进行。因此在需要明确表示动作还要持续下去时,应用现在完成进行时。如:
We have been studying here for two years. 我们在这儿已经学习了两年了。
在许多情况下,现在完成时表示动作已经完成,而现在完成进行时却并非如此。如:
He has cleaned the window. 他把窗户擦干净了。(动作已完成)
He has been cleaning the window. 他一直在擦窗户。(动作不一定完成)
有些静态动词只能用于现在完成时,一般不能用于现在完成进行时。如:
I’ve known him for many years. 我认识他有许多年了。
The war has lasted for a long time. 这场战争持续了很长时间。
有少数动词(如live, work, teach, study等)用两种时态都可以,意思差别不大。如:
I’ve lived [been living] here for 30 years. 我在这儿住了30年了。
How long have you worked [been working] here? 你在这里工作多久了?
现在完成时与现在完成进行时的相通性:在表达一个从过去开始而现在仍在继续或刚刚结束的动作时,
某些动词既可以用现在完成时,也可以用现在完成进行时,如 expect, hope, learn, lie, live, look, rain, sleep, sit, snow, stand, stay, study, teach, wait, want, work等。
如:你学习英语多久了?
正:How long have yon learnt English?
正:How long have you been learning English?
他已经睡了十个小时了。
正:He has slept for ten hours.
正:He has been sleeping for ten hours.