现在完成进行时
表示动作从过去开始一直持续至今,或刚停止、或要继续下去。也可以表示某种经历。
句型:have +been +doing

现在完成时
句型:have/has +过去分词
现在完成时表示动作发生在过去,但与现在有关系,即用一个发生在过去的动作来说明现在的情况。

比较
现在完成进行时 have been doing 强调的是持续性的过程,而现在完成时 have done 则侧重于这个动作所造成的结果和影响。

例句对比
(1)
It has rained for two hours. 雨下了两小时。(雨下完了)
It has been raining for two hours. 雨已经下了两小时了。(现在还在下)

(2)
The car is going again now. Tom has repaired it. 这车又能开了,汤姆修好了它。(修完了)
Tom’s hands are very dirty. He has been repairing the car. 汤姆的手很脏,他正在修车。(还在修)

(3)
I have been writing a book. 我一直在写一本书。(还没写完)
I have written a book. 我已经写了一本书。(写完了)

注意
1、有时现在完成时和现在完成进行时表达的意思一致。

例如:
She has worked on painting for six years. 她画画画了6年了。(还会继续)
She has been working on painting for six years. 她画画已经画了6年了。(还会继续)

2、表示状态的动词不用于现在完成进行时。

例如:
I have liked piano for a long time. 我喜欢钢琴很久了。(喜欢是一种状态)
I have been liking piano for a long time. (错句)