现在完成时与现在完成进行时的区别

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

例题:Tom __ in the library every night over the last three months.
A. works B. worked C. has been working D. had been working
分析:C。over the last three months 的意思是“在过去的三个月期间”,这类时间状语通常与现在完成时或现在完成进行时连用,四个选项中只有C符合此要求。
又如:
Food and drink culture in Britain is surely changing, has surely changed over the last two decades.
在英国,饮食文化肯定正在不断地发生着改变,并且在过去二十年中肯定已发生过不少变化。