A. 凡是"完成时态"都表示,不知道也不管动作发生的具体时间, 所以在使用现在完成时的句子里,不可以带有表示具体过去时间的状语,   如:yesterday , last week ( month , year , etc. ) , two weeks ago , in 1999等;
但常和有些副词连用,如: just , before , already , often , never , ever , not…yet , always等等。
B. 在以when提问的特殊疑问中不能用现在完成时。另外,ago不能用于现在完成时的句子里,因为它表示从现在算起的以前某个时间,属于表示具体过去时间的状语。但是可以用before 来表示"以前"的意义,因为它只表示"以前",而不知什么时候的以前。
C. 如果是不表示连续性的动词用于现在完成时的句子,不可以和以for表示的"一段时间"的状语连用。在这种情况下,应该用"It has been … ;since…"的句式来表达。如:
  He has joined the army for five years. (错误)
  It has been five years since he joined the army。(正确)