现在完成时说白了就是你为了解释现在的一个状况而去提过去的一件事情.比如当有人邀请你吃午饭,但你之前已经吃过了,吃不下了.这时你就要用现在完成时,I have had my lunch,其目的就是为了解释你为什么吃不下了,因为你之前已经吃过午饭了.
现在完成进行时表示从过去开始持续到现在或刚刚结束的一个动作,比如We have been looking for you everywhere.我们一直在找你,这句话的意思是说在见到You之前我们一直在做“look for you”这件事,而这件事在见到你之后刚刚结束.但 It has been raining for 2 hours.则表示这个雨在两小时之前就在下一直下到现在.
过去完成的用法就是“两个过去的发生的动作,先发生的就用过去过去完成时”,比如she said that she had been to Paris.她说她去过巴黎,那么她在说这句话的之前她肯定已经去过了巴黎,所以去过巴黎这个动作要用过去完成时.
过去完成进行时表示一个动作从过去某时开始,一直延续到另一个过去时刻,到那个时刻,该动作可能刚刚终止,也有可能还在继续.比如He said he had been waiting for a long time.说明他在说这话之前他一直在等,直到说这话的时候才刚刚结束.
when可以表示一个时间点,也可以表示一个时间段,但while则只能表示一个时间段,所以while的从句谓语动词必须是延续性的.还有当主句动作和从句动作同时发生的时候你两个都可以用,但若从句动作发生在主句动作之前你只能用when.总之一句话,when的作用范围比while广,当你不确定是否用while的时候请果断用when