对于初接触现在完成时的人来说,往往会产生一种茫然,因为它似乎与一般过去时相似。那就是,这两种时态描述的动作都始于过去。其实不然,现在完成时主要表示,发生在过去的动作延续到现在刚刚完成、或许还要延续;侧重于这个动作对现在带来的结果、产生的影响、积累的总和等等。而一般过去时则只不过是表示动作发生在过去的什么时候。弄清了这一区别,就很容易理解现在完成时了。它主要适用于下面的几种情况:
1)表示截止现在业已完成的动作
By now, I have collected all the data that I need .到现在为止,我已收集到了我所需的全部资料。
She has read 150 pages today .她今天已看了150页。
We havent met for many years .我们已多年没见了。
They have developed a new product .他们研制成功了一种新产品。
2)表示发生在过去而对现在产生影响、带来结果的动作
Have you had your dinner? 你吃晚饭了吗?
She has been to the United States. 她已去美国了。
You have grown much taller.你长高了许多。
3)表示过去发生的动作持续到现在,并可能还要延续
It has been five years since he joined the army .他参军五年了。
They have learned English for eight years .他们已学了八年的英语了。
So far weve only discussed the first five chapters.至今我们还只讨论了前五章。
几点注意:
1)一个句子应该用什么时态只能取决于它需要表达的意思,以及它所处的语言环境。例如:
He speaks English .(一般现在时,说明动作发生的经常性。)
He spoke English when he was in New Zealand .(一般过去时,说明动作发生的时间。)
He is speaking English.(现在进行时,说明动作正在进行。)
He has spoken English for three years since he came to the USA.(现在完成时,这里说明动作的总和。)
He has been speaking English since he came to the USA. (现在完成进行时,强调动作的连续性。)
2)在含有时间状语从句或条件状语从句的主从复合句中,如果主句的谓语动词是一般将来时,那么从句的谓语动词就只能用一般现在时来表示将来时;如果主句的谓语动词是过去将来时,那么从句的谓语动词就只能用一般过去时来表示过去将来时。
例如:I will not play tennis if it rains tomorrow.
I would not play tennis if it rained the next day.
3) 有些动词表示无法持续的动作,它们一般不宜用于进行时态中。这类动词常见的有:be , believe , consist , find , forget , hate , have , hope , hear , know , like , love , notice , prefer , remember , see , seem , smell , suggest , taste , understand , want , wish , sit down , stand up 等等。
Be动词若是用于进行时态,可表示暂时、短暂的情况或表现。例如:
Tom is being a good boy today .汤姆今天很乖。
He is being childish .他这样做是耍孩子气。
You are not being modest .你这样说不太谦虚。
4)关于现在完成时的时间状语问题
A. 凡是完成时态都表示,不知道也不管动作发生的具体时间, 所以在使用现在完成时的句子里,不可以带有表示具体过去时间的状语,如:yesterday , last week ( month , year , etc. ) , two weeks ago , in 1999等;但常和有些副词连用,如: just , before , already , often , never , ever , notyet , always等等。
B. 在以when提问的特殊疑问中不能用现在完成时。另外,ago不能用于现在完成时的句子里,因为它表示从现在算起的以前某个时间,属于表示具体过去时间的状语。但是可以用before 来表示以前的意义,因为它只表示以前,而不知什么时候的以前。
C. 如果是不表示连续性的动词用于现在完成时的句子,不可以和以for表示的一段时间的状语连用。在这种情况下,应该用It has been ;since的句式来表达。如:
He has joined the army for five years. (错误)
对于初接触现在完成时的人来说,往往会产生一种茫然,因为它似乎与一般过去时相似。那就是,这两种时态描述的动作都始于过去。其实不然,现在完成时主要表示,发生在过去的动作延续到现在刚刚完成、或许还要延续;侧重于这个动作对现在带来的结果、产生的影响、积累的总和等等。而一般过去时则只不过是表示动作发生在过去的什么时候。弄清了这一区别,就很容易理解现在完成时了。它主要适用于下面的几种情况:
1)表示截止现在业已完成的动作
By now, I have collected all the data that I need .到现在为止,我已收集到了我所需的全部资料。
She has read 150 pages today .她今天已看了150页。
We havent met for many years .我们已多年没见了。
They have developed a new product .他们研制成功了一种新产品。
2)表示发生在过去而对现在产生影响、带来结果的动作
Have you had your dinner? 你吃晚饭了吗?
She has been to the United States. 她已去美国了。
You have grown much taller.你长高了许多。
3)表示过去发生的动作持续到现在,并可能还要延续
It has been five years since he joined the army .他参军五年了。
They have learned English for eight years .他们已学了八年的英语了。
So far weve only discussed the first five chapters.至今我们还只讨论了前五章。
几点注意:
1)一个句子应该用什么时态只能取决于它需要表达的意思,以及它所处的语言环境。例如:
He speaks English .(一般现在时,说明动作发生的经常性。)
He spoke English when he was in New Zealand .(一般过去时,说明动作发生的时间。)
He is speaking English.(现在进行时,说明动作正在进行。)
He has spoken English for three years since he came to the USA.(现在完成时,这里说明动作的总和。)
He has been speaking English since he came to the USA. (现在完成进行时,强调动作的连续性。)
2)在含有时间状语从句或条件状语从句的主从复合句中,如果主句的谓语动词是一般将来时,那么从句的谓语动词就只能用一般现在时来表示将来时;如果主句的谓语动词是过去将来时,那么从句的谓语动词就只能用一般过去时来表示过去将来时。
例如:I will not play tennis if it rains tomorrow.
I would not play tennis if it rained the next day.
3) 有些动词表示无法持续的动作,它们一般不宜用于进行时态中。这类动词常见的有:be , believe , consist , find , forget , hate , have , hope , hear , know , like , love , notice , prefer , remember , see , seem , smell , suggest , taste , understand , want , wish , sit down , stand up 等等。
Be动词若是用于进行时态,可表示暂时、短暂的情况或表现。例如:
Tom is being a good boy today .汤姆今天很乖。
He is being childish .他这样做是耍孩子气。
You are not being modest .你这样说不太谦虚。
4)关于现在完成时的时间状语问题
A. 凡是完成时态都表示,不知道也不管动作发生的具体时间, 所以在使用现在完成时的句子里,不可以带有表示具体过去时间的状语,如:yesterday , last week ( month , year , etc. ) , two weeks ago , in 1999等;但常和有些副词连用,如: just , before , already , often , never , ever , notyet , always等等。
B. 在以when提问的特殊疑问中不能用现在完成时。另外,ago不能用于现在完成时的句子里,因为它表示从现在算起的以前某个时间,属于表示具体过去时间的状语。但是可以用before 来表示以前的意义,因为它只表示以前,而不知什么时候的以前。
C. 如果是不表示连续性的动词用于现在完成时的句子,不可以和以for表示的一段时间的状语连用。在这种情况下,应该用It has been ;since的句式来表达。如:
He has joined the army for five years. (错误)