目录
现在完成时态
1. “主语+have/has+动词过去分词+(宾语)+状语”肯定句构成方式
2. “主语+ have/has + 动词过去分词+ (宾语)+ 状语”一般疑问句和否定句构成方式
3. "主语+ be + 表语"肯定句构成方式
4. "主语+ be + 表语"一般疑问句和否定句构成方式
现在完成时态的用法
1. 表示从过去某时开始一直延续到现在的动作和状态
1.1 表示时间延续的时间状语有两种构成方式
2. 表示过去发生的某一动作对现在造成的影响和结果时
2.1 现在完成时态第二种用法特殊情况
现在完成时态与一般过去时态的区别
现在完成时态
现在完成时态由助动词“have(has)+过去分词”构成。
根据结构,现在完成时态主要由两部分组成。第一:助动词have或has;第二:动词的过去分词。动词的过去分词在有规则的情况下,过去分词跟过去式的变化规则是一样的,都是“动词原型+ed”,如:动词work的过去式是worked,过去分词也是worked。但是实际上,很多动词的过去分词是没有规则的。所以很多动词的过去式和过去分词是不同的。如:
| 原型 | 过去式 | 过去分词 |
| eat | ate | eaten |
| go | went | gone |
| speak | spoke | spoken |
| see | saw | seen |
另外,“have,has”在这里是作助动词的。助动词都是没有意思的,因此千万不要把“have,has”理解成作实义动词的意思“有,拥有”。那么,怎么才知道“have,has”到底是作助动词还是作实义动词呢?我们可以通过结构去区分:
当“have,has”后面跟的是“动词的过去分词”的时候,那么“have,has”就属于现在完成时态的助动词。
当“have,has”后面跟一个名词或代词宾格作宾语时,那么have、has就是一个实义动词,意思是“有,拥有”。如:I have a house. 这里的have后面跟的不是一个动词的过去分词,而是一个名词house,所以have是实义动词。而 I have seen you. 这里的have后面跟的是see的过去分词seen。很明显,这个就是一个现在完成时态的句子,have属于助动词,没有意思。
另外通过结构,我们知道了一个非常重要的规则:动词的过去分词是不能单独使用的,必须跟助动词have或has一起构成复合谓语。如:I seen you就是一个典型的错句,因为seen是过去分词,不能单独使用,必须加助动词have,改为:I have seen you才是正确的。同样,I known you也是错的,必须改成I have known you。
助动词has用于主语是第三人称单数的时候;have用于主语是其他各种人称的时候。也就是说,在现在完成时态里,当主语是第三人称单数时,必须加has助动词,然后再加“动词的过去分词”构成复合谓语;当主语是非第三人称单数时,用“have+过去分词”构成复合谓语。
现在完成时态的构成方式
1. “主语+have/has+动词过去分词+(宾语)+状语”肯定句构成方式
① 人称代词主格+have/has + 不及物动词过去分词+状语
如: I have worked here. You have stood here. She has cried.
He has sat here. I has sat. We have lived here. They have walked.
②名词+have/has + 不及物动词过去分词+状语
如:Nick has slept here. Jack has cried here. My wife has stood here.
My friends have sat here.
③人称代词主格+have/has + 及物动词过去分词+宾语+(状语)
如:I have seen you. You have drunk water. She has baked potatoes.
④名词 + have/has + 及物动词过去分词+宾语+(状语)
如: Nick has seen money. The boss has drunk beer. His friends have baked bananas.
2. “主语+ have/has + 动词过去分词+ (宾语)+ 状语”一般疑问句和否定句构成方式
首先,只要把助动词“have,has”移到句首,并且动词的过去分词不变,就可以变成一般疑问句了,当然有时候会根据逻辑发生人称变化。如:
肯定句:They have walked. 一般疑问句:Have they walked?
肯定句:I have worked here. 一般疑问句:Have you worked here?
现在完成时态“主谓宾”句型变否定句,只需在助动词“have,has”后面加一个否定词“not”,可以缩写haven‘t,hasn’t,另外,过去分词不变。如:
肯定句:They have walked. 否定句:They haven't walked.
肯定句:Nick has slept here. 否定句:Nick hasn't slept here.
3. "主语+ be + 表语"肯定句构成方式
"主语+ be + 表语"在现在完成时态里面,首先要加上助动词have、has,然后把系动词”be“变成过去分词“been”,这样,"主语+ be + 表语"句型在现在完成时态里面就变成了"主语+ have/has+been + 表语"。
①人称代词主格+have/has + been + (形容词)表语
如: I have been busy. You have been rich. She has been beautiful.
They have been happy.
②名词+have/has + been + (形容词)表语
如: Nick and Jack have been thin. My friend has been lazy. My students have been rich.
③人称代词主格+have/has + been + (名词)表语
如:I have been a teacher. Your have been a boss. She has been a nurse.
We have been leaders. It has been my office.
④名词+have/has + been + (名词)表语
如:Nick has been a teacher. Nick and Jack have been friends. My leader has been her lover.
4. "主语+ be + 表语"一般疑问句和否定句构成方式
首先,只要把助动词“have,has”移到句首,并且动词的过去分词不变,就可以变成一般疑问句了,当然有时候会根据逻辑发生人称变化。如:
肯定句:I have been busy. 一般疑问句:Have you been busy?
肯定句:She has been a nurse. 一般疑问句:Has she been a nurse?
现在完成时态"主语系表"句型变否定句,只需在助动词“have,has”后面加一个否定词“not”,可以缩写haven‘t,hasn’t,另外,过去分词不变。如:
肯定句:I have been busy. 否定句:I haven't been busy.
肯定句:Nick has slept a nurse. 否定句:Nick hasn't been a nurse.
现在完成时态的用法
现在完成时态有两种用法:
1. 表示从过去某时开始一直延续到现在的动作和状态
当表示“一个动作或状态从过去延续到现在”这种意义时,就需要使用现在完成时态来表达。如:“我已经学了10年英语了。”这句话就强调“动作从过去延续到现在”,学习英语的动作延续了十年,所以就要用现在完成时态,英文就是:I have learned English for ten years. 这种用法,有一个重要的要求:谓语动词必须是延续性的动词。什么是延续性的单词呢?顾名思义就是表示动作能延续的动词。我们可以通过比较瞬间性动词或者终止性动词来理解。如:“死die”这个动词就是一个瞬间性动词,因为死了就是死了,不能出现延续的,不可能说“死”这个动作延续了几天。心脏停止、呼吸停止的那瞬间就是死了,如果还有呼吸、心脏还在跳动,那就是没死。再如:“完成finish”和“开始begin”,“完成”也是终止性的动作,因为完成了就是完成了,没有说完成了几天的,这个不符合逻辑,几天了那就是还没完成。“开始”也是一样,开始了,动作就结束了,没有说,开始了很久都没有开始的,那就不叫开始了。
但是中文经常说“某某人死了多久”,也没有什么毛病。但是中文和英文是不同的,中文的动词其实很多时候并不是表面看到的意思,如:“毛泽东死了40年了”,其实这句中文并非强调动作延续,而是指“死的”状态延续了40年,或者强调时间过去了40年。所以正确的英文翻译应该是:Maozedong has been dead for 40 years. (主系表)。再比如:“我的课都开始五分钟了”,这句中文根本不是强调“开始”这个动作延续5分钟,而是强调“时间”过去了5分钟。正确的英文翻译应该是:It has been five minutes since I began my class. (从句)
再如:“我的房子都买了五年了”。这句中也是强调“这个房子属于你五年,即拥有这房子五年了”,并不是强调“买”这个动作延续了5年。英文里,“付钱”的瞬间“买”的动作已经结束了,不能延续了。因此英文翻译应该是:I have had my house for five years.
在英文里,“die,begin,buy”都属于非延续性动词。
英文比较常见的延续性动词有:work工作,study学习,live生活,learn 学习等等。另外,系动词be一定是“延续性动词”,所以“主语+have/has+been+表语”的句子都是可延续的。
因为所有的状态都是可以延续的,所以状态的句子不用考虑延续性动词的问题,这点比动作的句子简单。
确定了延续性的动词,还要注意时间状语。现在完成时态第一种用法,需要加上一个表示时间延续的状语,如:for two year 两年了,since 1998 自从1998年,all day 一整天。等。
1.1 表示时间延续的时间状语有两种构成方式
1. 由“介词for+一个有时间长度的词语”构成。
for在这里的意思是“达.../持续...”,不需要翻译为“达”,可以翻译成“...了”。“含有时间长度的词语”实际上就是由“冠词或数词+一个表示时间的名词”构成。如:
①for+a/an/one + 表示时间名词的单数
for a week 一周了 for a year 一年了 for one month 一个月了 for an hour 一个小时了
②for+数词+表示时间名词的复数 (数词>=2)
for 2 weeks 两个星期了 for 3 months 三个月了 for 10 years 十年了
2. 由“介词since+一个表示过去确定的时间的词语”构成
since 后面的词语一般是表示过去年份的数词,过去时态的句子或者其他表示过去具体时间的词语。因为since表示“自从”,也就是表示“自从过去的某个时间到现在”的意思,具体哪些词语可以,例子如下:
① since + 过去的年份数词
since 2008 从2008年到现在 since 2018 从2018年到现在
②since+表示过去的具体时间点(能用于一般过去时态的时间状语大部分都可以)
since last week 从上周到现在 since two days ago 从两天前到现在
since last month 自从上个月到现在 since Monday 自从星期一到现在 since 10 years old 自从十岁到现在
③since+一个一般过去时态的句子
since I met you last time.自从上次见到你到现在。 这个属于状语从句。
其实since和for可以表达同一个意思,如for 10 years就是since 2008,“10年了”就是“从2008年到现在”,现在是2018年,即刚好10年。
since three days ago=for three days 自从三天前到现在。即延续了三天。
另外,也可以带表示“目前为止”的时间状语,如so far,up to now,until now (都是到目前为止的意思)。但是不能直接加表示过去确定的时间状语, 如last week,yesterday,three years ago,因为这是不符合逻辑的。现在完成时态的这个用法,就是要表达动作或状态延续到现在,如果是过去确定的时间状语,就没有延续型了。
这种用法的时间状语掌握了,就可以用延续性的动词或be动词造一个现在完成时态的句子,然后在后面加上一个for/since构成的时间状语,表达“一个动作从过去延续到现在说话的这一刻”。另外,翻译成中文的时候,通常会加一个“了”或者根据中文的习惯去翻译。如:
1)主语+have/has + 动词过去分词(延续性动词)+宾语+for.../since...
She has slept for 8 hours. 她已经睡了八个小时。
She has slept since last night. 自从昨晚到现在,她一直在睡觉。
They have discussed the question for three days. 他们已经讨论这个问题三天了。
She has introduced her book for five minutes. 她已经介绍了五分钟她的书。
I have worked here for 10 months.
I have studied English for 9 years.
She has lived here for 1 year.
I've learned English since 1998.
2)主语+have/has + been+表语+for.../since...
I have been a teacher for 9 years. I have been an English teacher since 2007.
She has been rich for 50 years. The girl has been sad for three days.
My friend has been hungry since this morning. He has been an English teacher for 2 years.
How long have you been here? 你在这里多久了? I've been here for two days.我在这里两天了。
2. 表示过去发生的某一动作对现在造成的影响和结果时
现在完成时态的第二种用法(即当表示过去发生的某一动作对现在造成的影响和结果时,也要用现在完成时态)有点难理解,容易跟一般过去时态混淆。先看看这一用法的构成方式和要求。
这个用法的谓语动词要求是“非延续性动词”。如begin、give、go、meet、see、die等就是非延续性动词。非延续性动词就是指结果性或瞬间性动词等等,当然也有一些“特殊的动词”既可以是延续性有时又可以是非延续性的动词。
另外,这种用法不可以与表示时间延续的状语连用(for、since),但可以与不确定的时间状语连用,如already已经、yet仍然、once一次、twice两次、just刚刚、never从不、before之前等等。“already、just、never”放在助动词have,has后面,如:
I have already known the story. 我已经知道这个故事了。
She has never seen the sea. 她从来没有看见过大海。
He has just come. 他刚来。(注意just now用在一般过去时态,just用在现在完成时态)
“yet”只能用于否定句和疑问句,并且放在句尾。"once、twice、before"放在句尾。其实这种用法不加时间状语也可以的,而且一般情况下,这种用法没有主系表结构,特殊情况除外,因此,这种用法基本只有一个句型:
主语+have/has + 非延续性动词的过去分词+(宾语)+(地点状语)
翻译成中文时需要加上“已经”或“了”,特殊情况除外。如:
He has died. 他已经死了。(只要不乱加时间状语,这句话就是对的,下同。因为符合了现在完成时态第二种用法的结构)
We have come. 我们已经回来了。 The leaves have fallen on the ground. 树叶已经落到地上了。
These workers have finished the work. 这些工人已经完成了工作。 I have found her money. 我已经找到她的钱了。
They have seen you. 他们已经看见你了。 She has bought a car. 她已经买了一辆车了。
My students have forgotten me. My students have forgot me. (forget的过去分词有两个forgotten、forgot)
They have left their hometown. 他们已经离开他们的家乡了。
注意:They have left their hometown for five years. 他们已经离开他们的家乡了。(错错错!不能乱加一个时间状语,因为“leave离开”在英文里面属于非延续性动词,不能加一个表示延续的时间状语“for five years”。中文的“他们离开家乡五年了”并不强调“离开”这个动作延续了五年,而是强调“时间过去了五年”,英文必须用两外的表达方式:The have been away from thire hometown for five years. 或 It has been five years since they left their hometown)
I haven't finished my homework yet. 我还没有完成我的作业。(yet ,还)
I have visited the city before. 我以前参观过这个城市。 He has just come. 他刚刚来了。
I have had dinner. 我已经吃过饭了。 I have eaten dinner.
I have begun my class. She has given her pen to me. I have never seen her before.
I have met her before. he has gone to Beijing. He has been to Beijing twice.
这里要注意两个固定结构“have/has gone to+地方/位置”和“have/has been to+地方/位置”的用法。
“have/has gone to+地方/位置”表示主语去了什么地方,或者在去的途中,不在这里。
“have/has been to+地方/位置” 表示曾经去过某地方,主语现在不在那个地方了。注意:这里的been不少系动词be的过去分词been,而是把been to当作一个特殊的非延续性动词。如:
I have been to Guangdong. (人不在广东)。我曾经去过广东。
She has gone to Guangdong.(人在广东,不在这里)。她已经去广东了。
They have gone to the town. (人去了镇上,不在这里) My friend has been to America. (人不在美国了)
He has died. 他已经死了。(注意,不能说He has died for two years. 因为die是瞬间性动词,不能表示延续,中文里的“他死两年了”,其实是指“死的”状态两年了。在英文里,可以用形容词“死的dead”来表达。因为状态是可以延续的。如:He has been dead for two years. 他已经死了两年了。当然也可以用一般过去时态表达这个意思:He died two years ago. 他两年前死了。 )
2.1 现在完成时态第二种用法特殊情况
上面说了第二种用法不能跟一个表示延续的时间状语的。但是,如果这类句子是否定形式就可以用表示时间延续的状语(for、since)。
即: 主语+have/has + 非延续性动词过去分词+宾语
主语+ have not/has not + 非延续性动词过去分词+ 宾语+状语(for/since)
因为在否定句里面,逻辑是对的。如:我们不可以说: 我已经看见你10年了。“看见”是终止性、结果的动作。因此“I have seen you for ten years”是错的。看见了就是看见了,是表示结果的,是不能延续的,所以不能加时间长度“十年(for ten years)”。但是如果用否定句表达,加上表示时间延续的状语是符合逻辑的:“我已经10年没有见过你了。I haven't seen you for ten years”.因此含有非延续性动词的现在完成时态的句子,只要变成了否定句,表达“多久没有做某事了”,这就符合逻辑了。都可以加上“for/since 构成的时间状语”,如下面的句子:
She hasn't given me a gift for three years. 她已经三年没有给我礼物了。
I haven't seen her for 5 years. 我已经五年没有见过她了。
I haven't taken a shower for a week. I haven't visited the city for two years.
I haven't met her since last year. 自从去年,我就没有见过她。
现在完成时态与一般过去时态的区别
现在完成时态第二种用法的三个特点:
①现在完成时态第二种用法强调动作已经在过去的某个时间发生了,但是不知道什么时候发生,也不关心什么时候发生。最重要的是,不强调什么时候发生,反正动作在过去已经发生了。
②现在完成时态第二种用法的动作虽然发生在过去,但是强调对现在产生的影响,或者对现在产生某种结果,强调现在的情况,不强调过去。
③现在完成时态第二种用法不需要具体的时间状语,更加不能加过去的时间状语,因为强调的是现在的情况,不能用过去的状语,也不能加表示现在的时间状语,如:now、right now。因为动作在过去已经发生了,不是现在发生的。如I have eaten dinner now. 错错错!因为这句话用了现在完成时态第二种用法,根本不指“吃饭”的动作是“现在”发生的,实际上,饭早就吃了。现在完成时态不强调什么时候吃饭,也不关心什么时候吃饭,只强调对现在的影响:吃饱了、不想吃了。所以,一定要去掉now,直接说:I have eaten dinner.我已经吃过饭 了。 再如:
I have finished my homework. 我已经完成我的作业了。(这句话对现在的影响:不需要做了,可以交了)
I have seen the film. 我已经看过这部电影。(这句话强调对现在的影响:已经了解情况了,知道是什么内容,总之不想看了)
很多时候,我们只关心结果和现在的影响,以及现在的情况,不关心动作什么时候发生,所以我们经常需要现在完成时态第二种用法。如:
Have you printed the file? (只关心文件是否打印好,不关心什么时候打印的)
Have you finished your homework? (只关心作业是否已经完成,不关心什么时候做作业)
一般过去时态用法:
一般过去时态只是表示事情发生在过去,陈述的是一个事实,它可以和确定的表示过去的时间状语如:last night,in 1999,three days ago等连用。而现在完成时表示某一个完成的动作对现在造成的影响或结果,强调的是现在的情况,所以它不能和确定的表示过去的时间状语连用。如:
We have seen that film. 我们已经看过那部电影。(对现在造成的影响是我们对影片已经有所了解,所以不想看了。而且不说明什么时候看的,可能很久以前看的,不强调时间)
We saw that film last night. 昨天晚上我们看了那部电影。(只说明昨晚看电影的事实,说不定现在还想再看一次)
I bought the book last week. 我上周买了这本书。(只是强调上周做了什么事情,书是上周买的)
I have bought the book. 我已经买了这本书了。(强调对现在的影响:书已经买了,已经有书了,不需要再买了)
I sold 1000 books last year. I have sold 1000 books.
通过区别,我们知道,当我们要表达过去某一个动作对现在造成的影响,或者说强调现在的情况,那么我们就要用现在完成时态表达。如果我们只是客观表达一个过去的事实,跟现在没有关系的,那么我们就用一般过去时态。
很多人能理解这个时态,但是当自己想表达对“现在造成影响”这个意义时,往往用一般过去时态表达。这样,意思就产生偏差了,这是很多人犯错的原因之一,所以我们要特别注意。
如:I have made the mistake. (我又犯了这个错误了,完了完了,我现在还没改,错误对现在还造成影响,还没改过来。过去犯到现在)
I made the mistake ten years ago. (我十年前犯的错误了,陈年旧事了,我现在已经改了)