have joined与joined

因为 join是非延续性动词,用于完成时时不能和表示段的时间状语连用,要改为相应的状态动词,比如:他参军两年了.

正:he has been in the army for two years.

误:he has joined the army for two years.

上句可以改用过去时:

正:he joined the army two years ago.

___________

"by the end of 1992"这个时间状语不是点时间,而是段时间,用于过去完成时,意思是"到1992年年底为止";表示点时间的是"at the end of 1992",用于一般过去时,意思是"在1992年底".

比较:

He had been in the army for two years by the end of 1992.到1992年底,他参军有两年了.=he joined the army two years before the end of 1992.

He joined the army at the end of1992.他1992年底当的兵.