现在完成时的两种定义有其具体的应用范围.
1:已经做完对现在有影响——这是针对短暂性动作而言.如:I have posted your letter.句中的post这一动作为短暂性动作,此处完成时表示该动作已经完成,对现在的影响是信不在此地,已经被发出了.
2:一直在做,并可能延续到将来——这是对于延续性动作而言的.如:I have stayed here for 2 weeks.此处用完成时表示stay这一动作从过去持续到现在(将来可能还会继续).
楼主的句子“I have played soccer.”意思是“我已经踢过球了”,此处的play应理解为短暂性动词,按1理解;
“I have played soccer for two hours.”“我踢了2小时的球”,此处的play是延续性动词,按2理解.
所以,问题在于“短暂”还是“延续”均是相对而言,同一个动词在不同的语境中使用,经常既可以表示短暂又可以表示延续.上面的play就是一例.
最后,要明白所有的语法都要为句子的意思服务,脱离了意思以及上下文来谈语法未免空洞.