0%

English系列之完成时态(现在完成时)

这篇笔记摘选自张满胜老师的《英语语法新思维中级教程通悟语法第2版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。

完成时态的构成

完成时态(perfect tense)的构成分为两部分:一是助动词have,二是实义动词的过去分词-ed。具体来说,用助动词have表示“时 (tense)”,以表明动作发生的时间是在过去、现在还是将来;用过去分词来表示动作的“体态(aspect)”,以表明该动作已经完成。用-ed来代替过去分词,于是完成时态的构成是“have+-ed”。
以动词work为例,三种完成时态的构成形式如下:
现在完成时:have worked
过去完成时:had worked
将来完成时:will have worked

完成时态的意义

完成时态的本质思维或者说其核心意义就是用来表示“回顾 (retrospect)”,既然是“回顾”,就必然要涉及两个时间点,即从一个时间点回顾到另外一个时间点,因此完成时态必定涉及前后两个时间。
现在完成时就是站在“现在 (present)”的时间角度回顾一个“过去”的事件,是把“过去”和“现在”这两个时间点联系在一起,来表达一个事件。

过去完成时(past perfect tense)就是站在“过去(past)”的时间角度回顾“更远的过去”的事件,是把“更远的过去”和“过去”联系在一起来表达一个事件。

将来完成时(future perfect tense)则是站在未来的时间角度回顾在此之前发生的事件。


现在完成时态就是站在“现在”回顾“过去”;
过去完成时态就是站在“过去”回顾“更远的过去”;
将来完成时就是站在未来的时间角度回顾在此之前发生的事件。
所以,完成时态表示的就是一个横跨前后两个时间点的事件。

这个事件是如何把两个时间点联系起来的呢?

  1. 一个事件从一个时间点“延续(continue)”到另外一个时间点;
  2. 一个事件从一个时间点“重复(repeat)”到另外一个时间点;
  3. 一个事件在前一个时间点已经结束,但它的影响“延续”到另外一个时间点。

现在完成时

一个过去的事件与现在发生联系的方式有上述三种,对应于三种事件:

  1. 延续事件(continuous event):一个过去发生的事件“延续”到现在;
  2. 重复事件(repeated event):一个过去发生的事件“重复”到现在;
  3. 单一事件(single event):一个过去发生的短暂事件没有“延续”或“重复”到现在,但它的影响“延续”到了现在,或者说一个过去发生并结束了的事件对现在仍然有影响。

这三种联系的方式图示如下:

  1. 一个事件从过去“延续”到现在:
  2. 一个事件从过去“重复”到现在:
  3. 过去某一短暂动作对现在的影响:

回顾性思维

This has been my life. I have found it worth living, and would gladly live it again if the chance were offered me.
罗素用现在完成时总结说:“This has been my life.”。因为他是在回顾自己的一生经历,所以必然要用“现在完成时”这样一个横贯过去与现在的时态来作出“这就是我的一生”这样的结语。若单纯地用一般现在时说成“This is my life.”,那只表明他目前的生活状态——“这就是我现在的生活”,而失去了“回顾过去、纵观一生”的思想内涵。
2002年2月21日是美国前总统尼克松秘密访华30周年的纪念日,次日,美国时任总统小布什在中国著名高等学府清华大学发表了演说。
小布什作完演讲后,接受了清华大学学生的提问。当有位学生问到有关台湾问题时,小布什作了如下表态:
We’ve had many discussions with your leaders, and I’ve reiterated
support for the“One China”policy. It’s been my government’s policy for a long period of time, and I haven’t changed it.
这里短短的几句话,小布什全部用了现在完成时态,强调自从尼克松总统首次访华及后来的中美建交以来,中美两国之间在不断地交流、交往、增加接触、加强了解,以及美国政府 对“一个中国”政策的一贯支持。
我们可以想象,如果小布什用了一般过去时态,说成: The“One China”policy was my government’s policy for a long period of time. (我们美国政府曾经在很长一段时间内坚持了“一个中国”的政策。)
这句话的言外之意是,现在美国政府不再坚持这个重要政策了,那么接下来的一句话他就不会说“I haven’t changed it.”,而是要说“I have changed it. (但我现在已经改变了这个政策。)”。

延续事件

过去的事件“延续”到现在

所谓“延续事件”,是指“一个开始于过去的动作或状态(action or state)一直延续到现在”,这是现在完成时态最基本、也是最容易理解的意义和用法。
An old woman walked out into the middle of the street. The policeman yelled to her,“Don’t you know what it means when I hold up my hand?”The lady said,“Sure I do. I have been a school teacher for 28 years now.”
在这个笑话中,那位old woman对警察说的这句话:
I have been a school teacher for 28 years now.
表示她从事“老师”这个职业是从过去,即28年前开始并且一直延续到了现在,她现在仍然是老师,所以她说28 years now。
具体来说就是,如果要表示某一动作或状态 (action or state)从过去开始,并且一直持续(continue)到说话时,而且还可能持续下去,就要采用完成时态形式。

We have been in love for eight years and we are getting married next month. 我们恋爱有八年了,下个月就要结婚了。
I have learned English for over ten years now, but I still can’t speak it well.
在这句话里,“我”是在10年前开始学习英语的,但这个过去的动作一直延续到了现在,所以用了现在完成时态have learned。

“延续事件”与时间状语的关系

谓语要表示“延续”

既然是表示延续思维,句子的谓语动词就要给予配合,即要能够表示延续。具体来说,谓语必须是延续动词,如:learn/live,或者是能够表示延续状态的词,如be动词。如果是短暂动 词,则不能表示这种延续思维。比如这些都是错误的:
I have fallen in love for eight years. *
I have married for over a year. *
因为这里的fall in love和marry都是短暂动词,无法与延续性的时间状语(如for eight years, for over a year)连用。要改用表达状态的词,如be in love和be married。注意,这里的married是形容词,所以be married并不是一个被动语态。
之所以说“I have fallen in love for eight years. *”这样的句子是错误的,是因为这里的fall in love是一个短暂动作,而短暂动词不能与延续性的时间状语(如for eight years)连用。但这并不是说像fall in love这样的短暂动词不能用于现在完成时态。换句话说,句子错误的原因是fall in love这样的短暂动作与for eight years这样的延续性时间状语有语义上的冲突,而不是fall in love这样的短暂动作与现在完成时态有冲突。
“I have fallen in love.”这类句子是完全正确的,短暂动词完全可以用于现在完成时态,只是此时不能和延续性的时间状语连用。

要与“延续性时间状语”连用

表示延续思维的完成时态除了要有延续性的谓语之外,还必须有延续性的时间状语(durational adverbials),这种表示延续性动作或状态的完成时态一般必须接一个表示“一段时间”的延续性时间状语,以说明某个动作或状态持续到现在有多久了。

since+时间点或从句

Since time began, man has lived in fear of fire. 自古以来,人们就生活在对火的恐惧中。

for+时间段

Great changes have taken place in Beijing for the past few years. 近几年来,北京发生了巨大的变化。

“到目前为止”“迄今为止”

这样的时间短语有:until now,up until now,up to now,up till now 和so far等。请看例句:

“在最近几个世纪/几年/几个月以来”

这样的时间短语有:in the past few years,over the past few years, during the last three months,for the last few centuries,through centuries和 throughout history等。

1) I have lived in China for 3 years.
2) I lived in China for 3 years.
例句1)表示现在“我”还在中国居住。既然到目前为止已经生活三年了,因此我们可以明确计算出“我”是三年前开始居住在中国的。例句2)则只是说明“我”曾经在中国生活过三年,而且现在已经不住在中国了。这里三年的起止时间,即何时开始在中国居住,何时离开中国,我们都无从知晓。

没有延续性的时间状语,则表示一个“完成了(complete)”的动作

完成时态要表示延续思维所必须具有的两个条件:
(一) 谓语要表示延续;
(二) 要有延续性的时间状语。
但是如果没有这个延续性的时间状语,句子用完成时态还正确吗? 若正确,那又是什么意思呢?回答是:若没有延续性的时间状语,可以用完成时态,但表示的是一个在过去已经完成的动作,而没有延续到现在。

John has lived in Paris for ten years.
这句话用了现在完成时态,表示John现在还在巴黎生活 (John is still living in Paris now.)。但是如果没有延续性的时间状语而 说成“John has lived in Paris.”,则要理解成“约翰在巴黎生活过”,但现在 他已不住在巴黎了。
只有在特殊的上下文语境中,“John has lived in Paris.”这句话才有可能当“延续”讲。比如:
A: Where has John lived since he left Beijing?
B: He has lived in Paris.
这里,B的回答相当于“He has lived in Paris ever since he left Beijing.”。
A:约翰离开北京后一直在哪里生活?
B:他一直生活在巴黎。

Dr. Findlay was passing one of his patients in the street.“Hello, Mrs. Merton. You haven’t visited me for ages.”“I know, doctor. I’ve been ill.”
在这个语境中,虽然没有延续性的时间状语,但这里的完成时have been ill表示“一直在生病”,即表示延续事件。

I have been married for a year. 我结婚已经有一年了。
如果将这个句子稍做如下改变:“I have been married.”。
即把句末的时间状语for a year去掉,这时这个句子的意思不是“我已经结婚了”,而是“我曾经结过婚”。
这句话的言外之意是:“我”现在要么离婚了,要么丧偶了,总之是单身(single)。所以可以说,没有延续性的状语,延续状态顿时变成一个在过去完成的事件,而没有持续到现在。
比如当你向外国朋友 介绍自己时说“我已经结婚了”,很多人以为这里有“已经”,那当然得用完成时态,于是就把这句话说成“I have been married. (我结过婚,后来 离婚了。)”。听完这句话,你的外国朋友很可能是对你报以同情地说“I’m sorry to hear it.”。听他这么说,你可能会糊涂了,或者还以为他对你有什么企图呢!其实,要表达“我已经结婚了”,就是I am married. 这一简单的句子。

重复事件

过去的事件“重复”到现在

克林顿在2001年1月18日所作的卸任演说:
In all the work I have done as president, every decision I have made, every executive action I have taken, every bill I have proposed and signed, I’ve tried to give all Americans the tools and conditions to build the future of our dreams, in a good society, with a strong economy, a cleaner environment, and a freer, safer, more prosperous world. (Selection of President Bill Clinton’s farewell address to the nation on Jan. 18, 2001.)
在这里,克林顿不厌其烦地使用完成时态,正是表示在他的八年总统任职期间,他“重复不断”地在have done, have made decisions, have taken action, have proposed and signed bills。比如说“签署法案”,克林顿不可能是一直毫不间断“持续”地(continuously)在签署,这一签就持续了八年,而是表示在八年的总统任职期间,他“多次 重复”签署各种不同的法案。

I’ve been in Canada for six months. I’ve met many new friends.
这里的have been是完成时的延续性思维;而我们“结识 (met)”新朋友不是一刻不停地在延续,而是不断重复的一个过程,属于典型的重复性思维。

完成时态表示重复性思维时,句中往往都会有较明显的表示重复概念的词语或语言标示(如复数-s)。比如:
I have had so many teachers in my life.
…every decision I have made, every executive action I have taken, every bill I have proposed and signed,…
I’ve met many new friends.

有时候,句中并没有出现上述这样明确表示重复活动的“语言 标示”,但重复性思维隐含在说话的语境中。这时就要细心体会其中的重复意味,从而正确理解句子的内涵。
For us this has been the most perfect way to remember her, and this is how she would want to be remembered.
这句话是英国 的威廉王子在纪念母亲戴安娜的音乐会上说的。1997年8月31日,戴安 娜在巴黎出车祸,香消玉殒。2007年7月1日是戴安娜诞辰46周年纪念 日,威廉王子与哈里王子希望用戴安娜喜爱的音乐来纪念她。于是,由 两位王子发起,7月1日当天在英国伦敦温布利体育场(Wembley Stadium)举办“献给戴安娜的音乐会”,借音乐会的形式纪念戴安娜王 妃去世10周年(They organized the event to mark the 10th anniversary of their mother’s death.)。国内媒体在报道这则新闻时是这么翻译的:
对我们来说,这是纪念她的最佳方式,这也是她所希望的纪念方式。
虽然说这么翻译也未尝不可,但它并没有很好地传达英语原句的意思。这里关键是要理解威廉王子为什么要用完成时态has been,而不是直接说is。
自从戴安娜王妃去世后,英国举办过各种活动来纪念她。也就是说,到目前为止,纪念戴安娜的活动已经多次举办过,可以说是从过去到目前为止的重复发生的活动。威廉王子在音乐会现场说的话,显然是在“回顾”过去10年的各种活动,然后得出结论说,这次音乐会“是纪念她的最佳方式”,这正是完成时态“回顾”性思维的体现,并且是表示一个重复到现在的活动,因而他要用完成时态说“For us this has been…”,他用完成时态的另外一个意义还在于,完成时态还表明活动依然可以重复到将来,换句话说,以后一定还会有其他纪念戴安娜王妃的活动,因而也就可能出现比这次音乐会更好的其他纪念方式。
因此, 确切地说,这次音乐会是“迄今为止(up until now)”纪念她的最佳方 式,这正是威廉王子用has been所要传达的意义。如果威廉王子用一般现在时态说成“For us this is the most perfect way to remember her,…”,根据一般现在时态的思维特征——表示从过去到现在直至将来的一个永恒 的状态,则意味着这次音乐会作为纪念戴安娜的方式是“前无古人,后无来者”的,是永远无法被超越的了。相信这不是威廉王子所期望的, 所以他要用has been来给这次音乐会精确定位——这是迄今为止纪念她的最佳方式。
所以正确的翻译应该是:
对我们来说,这是迄今为止纪念她的最佳方式。如果她在天有灵的话,我想这也是她所希望的纪念方式。

2007年10月,卡特在接受英国BBC采访时对时任(2007年10月时)美国副总统切尼(Cheney)也提出了批评。他说切尼是一个好战分子,自己逃避兵役,在过去的10年中却一直强硬地通过军事手段在世界其他地方谋求美国霸权。他说切尼在很多问题上都是错误的,并说他对于美国来说是一场灾难:
You know he’s been a disaster for our country. I think he’s been overly persuasive on President George Bush and quite often he’s prevailed.
这里的has been并不是表示“重复”意义,而是表示“延续”意义——从切尼担任美国副总统一直到目前说话时为止,所以,我们采用“一直”来对应翻译。同样道理,如果切尼不再担任美国副总统,那么要对他作出如此评论,则应该用一般过去时was了。
你们知道,他一直是我们国家的灾难,我想他一直对总统乔治·布什过度诱导,并且经常取得成功。

“重复意义”的完成时态可以看作是“延续事件”完成时态的一个特例,所以,这两种完成时的思维方式是如此密切相关,以至于有时我们很难对二者进行严格的界定区分。 比如:
For more than eighty years, scientists have argued over whether life exists on the planet Mars.
如果把have argued当作延续性思维来理解,则可译为“80多年以来,科学家们一直在争论火星上是否有生命存在”。强调争论一直在持续,已经持续了80多年。 如果把have argued当作重复性思维来理解,则可译为“80多年以来,就火星上是否有生命存在这一问题,科学家们不断地挑起争论”。 表示争论了一段时间告一段落,若干年后,争论又被再次挑起或被多次挑起。强调80多年当中,“争论”多次被挑起,每一次争论只持续若干年。
延续思维:80多年以来,科学家们一直在争论火星上是否有生命存在。
重复思维:80多年以来,就火星上是否有生命存在这一问题,科学家们不断地挑起争论。
比较模糊的翻译:80多年以来,科学家们一直就火星上是否有生命存在这一问题不断地进行争论。

I have lived in Beijing for 10 years.
这句话可以表示“我”一直生活在北京,一刻也没有离开过北京;也可能是表示在北京前后断断续续地生活了10年,中间也离开过北京。此时相当于:
I have lived in Beijing on and off for 10 years.
我们还可以说:
I have lived in Beijing every winter for 10 years.
表示“我”每年冬天都回到北京生活,前后已经持续了10年了。这同样是重复与延续兼而有之的活动,相当于这样一条虚线。

“重复事件”与时间状语的关系

1) I have called him three times this morning.
2) I called him three times this morning.
在例句1)中,既然采用了现在完成时态,而且是表示重复的活动(因为有three times这样的“重复标示”),所以该句强调的是到目前为止的一个时间段内重复的活动,或者说过去的动作called重复到了现在,这里的“现在”显然就是this morning。也就是说,例句1)的说话时间是“今天上午”。而例句1)要表达的意思其实相当于:
I have called him three times so far this morning.
即表示“我今天上午到目前为止已经给他打过三次电话了”。言外之意是,随着现在的说话时间this morning往将来推移,“我”还可能继续给他打电话,可能打第四次、第五次……。由此可见,这里的“打电话(have called)”具有“将来可重复性(repeatable)”这个特点。
相比之下,例句2)与例句1)有很大的不同。既然采用了一般过去时态,则表明事情发生在过去,与现在没有什么联系,因此例句2)的说话时间可能是在“今天下午”或“今天晚上”。进而也就决定了“我”“今天上午”给他打电话的次数仅为三次,没有继续重复的可能性(“我”当然可以继续给他打电话,但已经不属于“今天上午”的活动次数了)。由此可见,这里的“打电话(called)”不具有“将来可重复性(repeatable)”这个特点。
1)我今天上午到目前为止已经给他打过三次电话了。
2)我今天上午给他打了三次电话。
由这个例句所揭示的have called与called在“可重复性”方面的差别可以推而广之,即现在完成时态具有“将来可重复性”,而一般过去时态 不具有“将来可重复性”。这是判断用现在完成时态还是用一般过去时态的重要原则,我称这个原则为“可重复性”原则(Principle of Repeatability)。

可重复原则是现在完成时态的一条根本原则

His father has been dead for three years.
他爸爸去世已经有三年了。
但是,对这个句子稍做如下改变: His father has been dead. *
这句英文真正的意思是:他爸爸曾经死过。在英文里,这个句子一般被认为是错误的,因为没有使用它的场合——人是不能死而复生的。

那么“他爸爸已经死了”用英 文该怎么说?

这句话要看上下文的语境。比如,说到你某位朋友的爸爸,如果你只是要说明他爸爸已经过世了这一事实,只需说“His father is dead.”。
但若是你这位朋友的爸爸刚刚去世,你的朋友当然很悲痛伤心、精神恍惚,当别人问你他怎么了,你就可以说是因为“His father has died.”,这里的现在完成时态就是过去发生的事件(比如朋友的父亲去世)对现在有影响(比如你朋友现在悲痛的表现)。
所以,对于像“死亡”这样天然不具有重复性的事件,即不能表示来回往复的发生,就不能用现在完成时来表示“过去经历”。同样,人不能返老还童,所以我们不能说: I have been old. *
这句话的意思是“我曾经老过”,言外之意是我现在又年轻了。显然,人是不能返老还童的。只能说自己曾经年轻过(I have been young.)。

可重复原则与将来的时间有关

现在完成时态所表达的动作或状态往往都含有持续或重复到将来某一个时间点的意味,即现在完成时与将来的时间有关,也就是我这里说的“将来可重复性”原则。 现在完成时态可以说是以现在的时间为参照来谈一个可以持续或重复 到将来的事件。
1) How many people have entered for the race?
2) How many people entered for the race?
虽然这两个句子都可以译成“有多少人报名参加这个比赛”,但在英文中,两个句子所使用的语境以及要表达的时间是不同的。
在例句1)中,完成时态表达了一个重复活动,真正的含义是“到目前为止有多少人报名参加这个比赛”,相当于“How many people have entered for the race so far?”。其言外之意是,这个比赛还没有开始举行, 是一个将来的活动。说话人关心的是到现在为止报名参加的人数。所以,这正是上面提到的“现在完成时是以现在的时间为参照来谈一个可以持续或重复到将来的事件”。这里是重复到将来的事件——不断有人报名参加,即具有“将来可重复性”。如果比赛已经结束了,成了一个过去的事件,则“(报名enter for)”就已没有“将来可重复性”了,此时我们就不能用现在完成时态,而只能用一般过去时态,这正是例句2)要表达的意思。
在例句2)中,用一般过去时态表明这个比赛已经结束了, 而不是一个将来事件。该句真正的意思是“有多少人报名参加了那次比赛”。
1)到目前为止,有多少人报名参加这个比赛?
2)有多少人报名参加了那次比赛?

Many athletes have entered for the Olympic Games this year.
这里用了现在完成时态,表明奥运会还没有举行,这里的“报名”是一个可以重复到将来的活动。

其实,即使是一个单一的事件而不是一个重复活动,如果使用了现在完成时态,同样与将来时间有关系。

I have entered for the examination but I don’t want to take it.
这个句子用了现在完成时态,表明是将来的事件——考试是在将来举行。
这次考试我已经报名了,但我不想考。

A: Have you visited the new exhibit?
B: Not yet, but it will be at the student center until June.
从B的回答中我们知道这个“展览会(exhibit)”还没有结束,是一个可以持续到将来的事件,因而具备了将来可持续性,所以用了现在完成时态。如果说话人问的是“Did you visit the new exhibit?”, 则表明这个展览会已经撤展结束了,已是一个过去的事件。
A:这次新的展览会你去参观了吗?
B:还没有去,不是一直在学生中心展览到6月份才结束嘛。

A: I’ve been invited to a dinner party at Janet’s. Do you think I should bring something?
B: You could pick up a cake. Chocolate is her favorite.
从这个对话的语境中我们知道,这个dinner party还没有举行,是一个将来的事件。不过,“邀请(invite)”现在已经发生了,它的影响会一直持续到现在及未来直到dinner party结束,所以用了现在完成时态。如果用一般过去时说“I was invited to a dinner party at Janet’s.”, 则只表示一个过去的事件,即dinner party已经结束了。
A:我受到邀请去珍妮特家参加晚宴,你认为我该带点什么东西去吗?
B:你可以买一份蛋糕嘛,巧克力口味的她最喜欢。

可重复性原则与过去时间

在英文中,确定的过去时间状语(如yesterday和last night)不能用于现在完成时态,这可以用可重复原则来解释。因为过去时间状语表明事件在过去已经完成而无法延续或重复到现在及未来,这就违背了完成时态的将来可重复性原则,故现在完成时不能使用确定的过去时间状语。
1) I was absent four times last semester.
2) I have been absent twice this semester.
在例句1)中,过去时间状语last semester表明“缺课 (absent)”这个事件已经结束,即上学期只有确定的四次缺课。该事件不具有可重复性,所以不能用完成时态。
在例句2)中,这学期还没有结束,随着时间的推移还可能有更多次数的“缺课(absent)”。该事件具有未来可重复性,所以要用现在完成时态。
1)我上学期逃课四次。
2)这学期到目前为止我逃过两次课。

可重复性原则与现在时间

所谓现在时间,是指诸如today,this week和this year等这样的时间状语。这样的时间状语一般都会用于现在完成时态,如果有特殊的语境信息表明某个事件无法继续延续或重复到现在及将来,就用一般过去时。现在时间可以用于现在完成时态或一般过去时态。
1) I haven’t seen him this morning.
2) I didn’t see him this morning.
例句1)用了现在完成时,而完成时是要与“现在”发生联系的,故例句1)说话的时间是this morning。该事件具有可重复性,随着时间的推移,“我”有可能会见到他。例句2)用的是一般过去时,说明this morning已经成为过去的时间,故例句2)说话的时间是在“今天下午”或“今天晚上”。该事件不具有可重复性,“我今天上午没有见到他”已是确定无疑的事件,不可改变了。

1) I have made five phone calls today.
2) I made five phone calls today.
这里的例句1)用现在完成时态,则表明“打电话”这个活动还会重复到未来,今天很可能会继续打第六个、第七个电话。而例句2)用一般过去时态,则表明“打电话”这个活动在今天不会再重复了,今天总共就只打了五个电话。
想象一下这两个句子不同的使用语境:比如你在一家公司做电话销售员,你的工作就是每天不断地打电话联系你的客户,推销产品。在今天上午10点钟的时候,你和同事交流时说“我今天打了五个电话了”,此时显然你就得用现在完成时态说“I have made five phone calls today.”。而如果你在下午下班后和同事交流时说“我今天打了五个电话”,此时显然你不会再打电话了,所以要说“I made five phone calls today.”。

可重复性原则与一般时间

一个句子如果出现了具体的过去时间状语,那就不能使用现在完成时态。比如我们不能说:
I have gotten up at five o’clock this morning. *
但不是只要出现了表示某一时刻的时间状语, 句子就一定不能使用现在完成时态。比如:
I have gotten up at five o’clock in the morning.
仔细比较以上两句就会发现二者的不同:前一句用了this morning(今天早晨),而在说话的时候,“今天早晨”一定已经成了过去,所以有了这样具体的过去时间状语,就不能用现在完成时态。 但是后一句是用了in the morning(在早晨),而“在早晨”并不是指“今天早晨”。因此,at five o’clock this morning是一个具体的过去时间,但 at five o’clock in the morning并不是指一个具体的过去时间;前者只有一次,但后者可以无数次地重复。所以,具备了这样的“可重复性 (repeatable)”,完全可以用现在完成时态来表达。
后一句就是表示到目前为止的一个“重复活动”,是一个典型的现在完成时用法,翻译成“我曾经在早晨五点钟起过床”,说话人这样表达的言外之意是要强调“五点钟”是一个很早的时间,而自己曾经这么早就起床,即表明自己具有早起这样的“过去经历”。类似的我们还可以说:
I have gone swimming at 12 at midnight.
这句话的意思就是“我曾经在夜里12点去游过泳”,同样表示自己的“重复经历”。当然,我们不能说:
I have gone swimming at 12 last night. *

可重复性原则与地点表达

有时,地点状语起着表明说话时间的作用,因为地点的转化总是伴随着时间的变化。
1) In my hometown, I had five jobs.
2) In this city, I have had two jobs.
在例句1)中,地点状语in my hometown表明“我”现在人不在老家,这个地点状语暗含了过去的时间,所以该句要用一般过去时态,该事件不具有可重复性。在例句2)中,地点状语in this city表明“我”现在人在这个城市,这个地点状语暗含了现在的时间,该句的意思是“到目前为止我做过两份工作”,该事件具有可重复性,所以用现在完成时态。
1)我在老家的时候,做过五份不同的工作。
2)在这个城市,我到目前为止做过两份不同的工作。

可重复性原则与去世的人的情况

一般来说,谈到有关去世的人的情况,往往都是无法持续和重复的,即不具有将来可重复性,所以,涉及去世的人的句子通常要用一般过去时态,而不能用现在完成时态。
这里举一个关于电影明星的例句。我们知道,美国著名影星玛丽莲·梦露(Marilyn Monroe)已不在人世,所以谈到关于她的情况时,往往要用一般过去时态。而美国人
称“大嘴美人”的茱莉亚·罗伯茨(Julia Roberts)现在还活着,所以谈到关于她的情况时,就会用到现在完成时态。比如:
1) Marilyn Monroe starred in many movies. She died in 1962.
2) Julia Roberts has starred in many American movies.
1)玛丽莲·梦露于1962年去世,她生前出演过多部电影。
2)茱莉亚·罗伯茨出演过很多美国电影。
如果将对茱莉亚·罗伯茨的介绍改为一般过去时态,说成:
Julia Roberts starred in many American movies.
则会有两种情况:一是等她去世之后这么说,二是她明确宣布退出影坛了。但这两个条件现在都不满足,所以上面这个句子在native speaker听来就显得有点奇怪(sounds odd)。而后一种情况适合日本影星山口百惠(Momoe Yamaguchi),虽然她还活着,但已息影多年,所以要用一般过去时来谈她的从影经历。

可重复性原则与特定语境

有时,这种“超语言信息”的背景知识并不是一个众所周知的常识,而只是交际双方共有知识(shared knowledge)的一部分,此时到底用现在完成时态还是一般过去时态,则取决于具体语境。如果有语言外的信息决定了某一活动不再延续重复,就要用一般过去时态。比如:
1) Have you ever fallen off a horse?
2) Did you ever fall off a horse?
在例句1)中,用了现在完成时态,意味着“骑马”这个活动没有结束,将来还要骑马,因此fall off a horse这个事件可能重复发生。
在例句2)中,用了一般过去时态,意味着“骑马”这项活动不再持续,说话人不再骑马了,因此,fall off a horse这个事件不可能重复发生。
1)到目前为止,你骑马从马背上摔下来过吗?
2)你以前骑马的时候,从马背上摔下来过吗?

A: Have you ever fallen off a horse?
B: Yes, I’ve fallen off quite often.
A:到目前为止,你骑马从马背上摔下来过吗?
B:是的,我经常从马背上摔下来。

A: Did you ever fall off a horse?
B: Yes, I did occasionally.
A:你以前骑马的时候,从马背上摔下来过吗?
B:摔过,不过只是偶尔摔下来。

由此可见,“可重复性(repeatability)”是现在完成时态的一个重要的思维特征。

单一事件

何谓“对现在有影响”?

He’s Just Been to the Zoo
When I was waiting in line at the bank, I noticed a woman holding a small child at one of the windows. The boy was eating a roll, which he thrust at the teller. The teller smiled and shook his head.
“No, no, dear,”said the boy’s mother, and then, turning to the teller,“I beg your pardon, young man. Please forgive my son. He’s just been to the zoo.”
“去动物园”这个事件是发生在过去的,对现在的影响是:小男孩拿自己吃的面包卷去“喂”银行柜员(The little boy thrust the roll at the teller.),他还以为自己在喂一只动物呢!这一“对现在的影响”从完成时的句子“He’s just been to the zoo.”本身是看不出来的。
他刚去了动物园
那天我在银行排队办事时,看到一位妇女抱着一个小孩站在一个窗口前。小男孩正在吃一个面包卷,并把它往一个柜员面前送。这位营业员微笑着摇了摇头。 “宝贝,别这样,”孩子的母亲说道,然后转过脸对柜员说:“对不起,先生,请原谅这孩子,他刚刚去了动物园。”
由此可见,“单一事件”的完成时态是与说话的语境密切相关的,若单独拿出完成时态的句子,我们很难理解其所要表达的真正含义,因为它所要表达的言外之意或潜含在上下文的语境中,或通过上下文的其他句子反映出来。所以,在使用中绝不应死记规则,而要真正理解完成时态的这一用法特点,要融入自己的思维。因为语言表达本质上是一种思维表达,语言只是载体,它的背后是说话人的思维!

She has been to the bank. (她去过那家银行了。)
这句话背后的“言外之意”或者说“对现在的影响”是什么?我们只要发挥想象就可以很容易地造出很多不同版本的“对现在的影响”,比如比较直接的影响有:1)为什么她现在有钱花了(She has some money.),因为她去银行取过钱了;2) 她已经把手里的支票存到银行了(The checks are deposited.)。 比较间接的影响有:1)她为什么知道那家银行的地点位置,因为她以前去过(即She has been to the bank.);2)她为什么现在很高兴,因为她曾去这家银行应聘工作,她刚去过这家银行(即She has been to the bank.)。现在知道自己被录用了,等等。
所以,一个完成时的句子若是用在真实的语境中,可能产生多少种“对现在的影响”。

何谓“过去事件”?

“过去事件”中的这个“过去”应该有离现在较近和较远之分。“单一事件”的完成时既可以表示发生在最近的动作,也可以表示发生在较远的过去的动作,具体情况要看上下文的语境。
David has fallen in love, and that’s why he’s becoming excited.
这个例句就应该理解为恋爱这个事件是发生在“近的过去(quite recently)”,而且对现在的影响是he’s becoming excited。
戴维恋爱了,所以他为什么那么兴奋。
有时对于同一个句子,按照“近的过去”与“远的过去”两种意义都可以理解,但两者表达的意思不一样。比如:
Have you asked your little brother to do the dishes?
首先,这个句子不能译成延续状态,因为我们强调过,表示延续状态的完成时一般必须同时满足两个条件:句子的谓语是延续性动作或状态(continuous action or state);句子带有延续性的时间状语(durational adverbials)。这里, ask不是延续性动词且句中没有延续性的时间状语,因此这里的完成时态不是表示延续状态,所以不能把它翻译成“一直让你弟弟刷碗”。其实,这个英语句子是有歧义(ambiguous)的。产生歧义的原因是我们既可以把asked作为“近的过去”来理解,也可以作为“远的过去”来理解。歧义是:
1)你让你弟弟把碗刷了吗?(近的过去)
2)你有没有让你弟弟刷过碗?(远的过去)
在句1)中,问话的人一般应该是你的家人,比如说你妈妈。设想这样一个场景:因为正要开饭了,而她找不到干净的碗碟,所以她问你:“你让你弟弟把碗刷了吗?”她现在关心的是有没有干净的餐具可以 用——这就是用现在完成时所要表达的“对现在的影响(current influence)”。在句2)中,问话的人一般不可能是你的家人,应该是你的朋友。设想这样一个场景:你和朋友们正在聊兄弟之间的关系,你告诉你朋友说,你喜欢让你弟弟做各种各样的事情,比如让他为你洗衣服、替你做功课、给你做饭等等,这时候你的一个朋友问你:“那你有没有让你弟弟刷过碗呢?”
由此可知,对于“单一事件”的完成时态,虽然该事件发生的过去时间是不确定的,但我们可以大概地区分为“近的过去(near past)”事件和“远的过去(distant past)”事件,因而所表达的意思也不一样。这种时间上的远近是需要借助上下文的语境才能作出区分的,单从完成时态句子本身是无法区分的。因此可以说,“单一事件”的完成时态,若是离开语境,几乎无法理解它所要表达的真正含义。

新闻热点(hot news)——近的过去

所造成的现在结果往往是直接具体或依然清晰可见的

具有最新热点新闻的效果

在日常对话中,完成时态的这个用法常常用来提供最新消息。比如某个名人刚刚去世,这往往是个大新闻,这时就会用到现在完成时态。
比如:I hear that famous Chinese comedian has died. 我听说那位著名的中国喜剧明星去世了。
The President has been assassinated. 总统被暗杀了。
但是,如果某个名人的“死亡”不是刚刚发生的,而是离现在的时间比较远了,就要改用一般过去时态了。比如肯尼迪总统是被刺杀的,但因为是很久远的事情了,所以要用一般过去时态来表达:
John F. Kennedy was assassinated.

时态搭配:现在完成时+一般过去时

口语对话中常出现“现在完成时+一般过去 时”的时态搭配使用。此时,我们用“现在完成时”提起一个新闻话题, 用“一般过去时”继续详谈内容。
比如,若你要把萨达姆被捕这一新闻告诉你的朋友,你一开始应该用现在完成时,接下去的对话则应改为过去时:
A: The former Iraqi President Saddam has been captured.
B: Really? When did that happen?
A: He was captured Saturday at 8:30 p.m. in a cellar on an isolated farm near Tikrit.
A:伊拉克前总统萨达姆被抓了。
B:真的?什么时候?
A:他是周六晚8:30在提克里特附近一个偏僻的农场的地窖里被捕的。

过去的经历(past experience)——远的过去

表示过去经历的现在完成时

当谈论一个发生在离现在时间较远的过去的某个事件时,常常含有回顾自己曾经的经历的意味。所以,如果把现在完成时用于指较远的过去的事件,这时的完成时往往用来谈论人们过去的经历或经验(past experience)。
1) Have you ever called in sick at work when not ill?
2) Have you ever taken office supplies from your company?
3) Have you ever taken anything valuable from your company for personal use? 等等。
这些问题涉及的时间跨度很长,其中伴有时间副词ever(曾经)来强调这个时间跨度。正如有受访者所言:“‘曾经’是一个很长的时间范畴 (Ever is a long time.)”,它包括从出生以来到目前为止的任何一个过去的时间点,这正是现在完成时态的第三种思维——“单一事件”完成时。所以,上述句子都用了现在完成时态。另外,这里的完成时句子都是表示过去的经历,具有“远的过去”事件的意味。

时态搭配一:现在完成时+一般过去时

这一时态搭配中的现在完成时也可以用来谈“远的过去”事件,此时用完成时询问对方过去的经历,然后用一般过去时继续详谈这个经历的具体情况。
A: Have you seen the film Forrest Gump?(询问对方过去的经历)
B: Yes, I have. (现在知道电影的内容)
A: When did you see it?(关心看电影的过去的具体时间)
B: I saw it last spring. (给出具体时间)
A: Did you see it alone?(询问当时的情况)
B: No, I saw it with my boyfriend. (提供过去的事实)

时态搭配二:一般过去时+现在完成时

用一般过去时讲述自己过去的经历,然后用现在完成时探询对方是否有相似的经历,以期望获得更多的理解或共鸣。
John: We went down into Juarez and through El Paso, and oh, we had a ball.
Louise: Really?
John: Yeah. Have you ever been to—have you ever heard of Juarez? Louise: I’ve heard of both of them because my girlfriend’s old boyfriend was stationed in El Paso.
John: Well, we went to Juarez…
这里约翰在用一般过去时讲述自己在华雷斯的经历, 但在继续讲故事之前,他从过去时态的叙述转到一个现在完成时态的询 问(Have you ever been to—have you ever heard of Juarez?),以此来探询路易斯是否了解华雷斯这个地方。而路易斯在展示自己的有关知识时 也使用了现在完成时(I’ve heard of both of them…),表明自己对华雷斯有所了解。而这个“现在的了解”是因为过去听说过那个地方——即过去的事件对现在有影响。
约翰:我们南下去了华雷斯,穿过了整个埃尔帕索市,哦,我们玩得开心极了!
路易斯:真的?
约翰:是的。对了,你曾经去过——你听说过华雷斯吗?
路易斯:这两个地方我都听说过,因为我的女朋友的前男友就是驻扎在埃尔帕索的。
约翰:噢,我们去了华雷斯……

时态搭配三:一般现在时+现在完成时

如果说话人谈到的过去经历是一般常见的经历,而不是指某一次具体的过去的经历,那么他会用一般现在时态,然后接一个现在完成时态,来探寻听话者/读者是否有过类似的经历。

“单一事件”与时间状语的关系

“单一事件”完成时的肯定句不与持续的时间状语连用

这种完成时态的谓语动词通常是短暂动词,即指动作在短时间或瞬间内就已终止,而不再延续。常见的这类动词有:come,go,leave, kill,die,lose,buy,start,give,marry,join和bring等。因为动作本身无法延续,因此与它连用的时间状语不能是指“一段时间”的,如for a year等。这恰好与“延续事件”的完成时相反——“延续事件”的完成时必须加持续的时间状语,而“单一事件”完成时态不能加持续性的时间状语,
I have bought this pair of shoes for a year. *
I have married for over a year. *
I have fallen in love for eight years. *
He has left his hometown for three years. *

汉语里完全可以说“这部电影我看了有两年了”,但在英语里却不能用现在完成时态这样表达:
I have seen the movie for two years. *
因为这里句子的谓语动词是短暂性的,不能表示延续,因而不能与 since或for等引导的持续性的时间状语连用。只要把“动作(action)”转 化为“状态(state)”即可,因为状态是可以延续的。
比如上面几个错误的句子可以分别改为相应的“状态”:
I have had this pair of shoes for a year. 这双鞋我买了有一年了。
I have been married for over a year. 我结婚有一年多了。
I have been in love for eight years. 我恋爱有八年了。
He has been away from his hometown for three years. 他离开家乡有 三年了。
若句中的“动作”表达无法转化成“状态”表达,就不能用现在完成时态,而只能改为一般过去时态。比如see没有对应的状态表达,所以上面的例句5只能改成一般过去时:
I saw the movie two years ago.
这完全能够表达汉语的“这部电影我看了有两年了”这句话的意思。
其他句子也可以作同样的时态改变,比如说:
I bought this pair of shoes a year ago.
I got married over a year ago.
He left his hometown three years ago.

“单一事件”完成时的否定句表示状态意义,可与持续的时间状语连用

短暂性动词的完成时句子若用否定式,表示尚未发生的事情,则可作为一种状态(state),从而可以表示延续。所以,这种否定句就相当于前面介绍过的“延续事件”完成时态。
来看下面这个可怜的乞丐:
Beggar: Madam, I haven’t seen a piece of meat for weeks.
Lady: Mary, please show this poor man the ham we bought just now.
乞丐:夫人,我已经好几个星期都没见过一片肉了。 夫人:玛丽,把我们刚才买的那根火腿给他瞧瞧。
这位乞丐说“haven’t seen a piece of meat for weeks.”,显然其言外之意是“给我一些肉吃吧”,但那位妇人故意从字面上理解他的意思,所以让玛丽只是给他“看肉”。这里短暂动词see的否定式与延续的时间状语 for weeks连用了。

“单一事件”完成时常与不确定的时间状语连用

是现在完成时更多的是与过去的不确定的时间搭配使用,如:already (已经),yet (只用在疑问句或否定句中),lately (最近), just (刚刚,方才),never (从不,从未发生过),ever (曾经)和before (以前)等,而且还可以按照前面讨论的“远近过去”把它们划分为:

  • 较远的过去:ever(英文意思是any time between the past and the present,表示“曾经”,一般指较远的过去时间)和before;
  • 较近的过去:yet,already,lately和recently;
  • 更近的过去:just,表示“刚刚”,常与完成时态连用。

A: Have you ever been to the Great Wall?
B: Yes. I’ve been there many times.
或B: Yes. I went there last spring.

Get a hold of yourself! I’ve never seen you so upset before!
你要控制一下情绪。我以前从未见你这么生气!

A: Have you found a job yet? 你找到工作了吗?
B: No, not yet. 还没有。
He hasn’t arrived yet. 他还没到。

在肯定句中,用already代替yet表示“已经”:
A: Have you found a job yet? 你找到工作了吗?
B: Yes. I’ve found a job already. 是的,我已经找到工作了。
He has already arrived. 他已经到了。

A: Would you like something to eat? 你想吃点什么吗?
B: No, thanks. I’ve just had dinner. 不了,谢谢。我刚吃过饭。(现在不饿)

“延续事件”“重复事件”与“单一事件”之间的相互关系

延续事件与单一事件

这二者的区别和联系主要与能否带有持续的时间状语有关。
1) His father has been dead for three years.
2) His father has died for three years. *
这里例句1)正确,而例句2)错误,因为die表示短暂 动作,不能与持续的时间状语for three years连用。
他父亲去世三年了。
但要注意的是,短暂动词可以用于现在完成时态。比如:
He has married. 他已经结婚了。
His father has died. 他父亲已经去世了。
一般只能表示单一事件中的“近的过去”事件。
延续事件的完成时在没有持续时间状语时不能表示延续,只能表示过去曾经的经历,这正是单一事件中的“远的过去”事件。
1) I have been married for a year.
2) I have been married.
例句1)表示“我结婚已经有一年了”,现在是已婚状 态;例句2)则表示“我结过婚”,而现在是单身。
综上所述,延续事件与单一事件的联系是:不带有持续的时间状语的延续事件立即变成了单一事件中的“远的过去”事件——表示过去的经历。

延续事件与重复事件

1) He has been married for a year.
2) He has been married a couple of times.
这里的例句1)表示延续事件,而例句2)表示重复事件。
1)他结婚有一年了。
2)到目前为止他结过两次婚。

重复事件与单一事件

重复事件与“远的过去”单一事件

I have been married. 我结过婚。
这句话的意思是“我结过婚”,是表示“过去曾经的经历(a past experience)”,是一个“远的过去”单一事件。但它并没有告诉我们“结婚”经历了几次,只是我们知道“结婚”这一事件到目前为止至少发生过 一次(at least one occurrence up to the present)。说“至少发生过一次”其实就潜含了重复的意味,也就是说“结婚”至少有一次,也可能是多次。 因此,我们很容易就能把上面这句变成一个重复事件,即在句末加一个“重复标示”——频度状语(比如three times)说成:
I have been married three times. 到目前为止我结过三次婚。
这是一个典型的表示重复事件的完成时句子。所以,从表示过去经 历的“单一事件”到“重复事件”,只需迈一小步,即加上一个表示具体次数的频度状语就可以了。
另一方面,用现在完成时来谈论过去的经历时,这个经历一定得是具有可重复性的。如果一个活动或状态天然不具有重复性,即不能表示来回往复的发生,就不能用现在完成时来表示“过去的经历”。比如 说“死”,因为人死不能复生,所以不能说: His father has been dead.* 同样,人不能返老还童,所以也不能说: I have been old.*

重复事件与“近的过去”单一事件

He has been fired.
它既可以解释成“远的过去”事件,即表示“过去的经历”: 他被开除过。
也可以理解成“近的过去”单一事件: 他被开除了。
为了消除歧义和更明确地表达意思,我们可以添加相应的时间状语来加以区分。比如说:
He has been fired before. (他以前曾被开除过。)
He has just been fired. (他刚被开除了。)

事实上,句子“He has been fired.”存在歧义,这本身就说明了重复事件、“远的过去”单一事件以及“近的过去”单一事件这三者之间是密切相关的。像上面论述的那样,这个句子稍做改变就可以更明确地传达出这三个不同事件的含义。比如通过添加不同的状语three times,before和 just说成:
He has been fired three times. (到目前为止,他已经被开除过三次了。——重复事件)
He has been fired before. (他以前被开除过。——“远的过去”单一事件)
He has just been fired. (他刚刚被开除了。——“近的过去”单一事件)

“动作表达”的完成时态与“状态表达”的一般现在时态

“动作表达”和“状态表达”的区别往往与现在完成时态有着密切的联系。比如上面关于“结婚”的例子,如果要表达“我结婚有一年了”这样的延续状态时,只能用“状态表达”即be married,而不能用“动作表达”即 married或get married,所以这句中文用英文表达就是:
I’ve been married for a year.
而不能说:
I’ve married for a year. *
I’ve got married for a year. *

以“结婚”为例。看到“I have been married.”,要理解成“我结过婚。”但要表示“我已经结婚了”,英文里可以用“动作表达”的完成时态这样说:
I have married.
也可以用“状态表达”的一般现在时态这样说:
I am married.
这两句话的语境背景还是稍有不同的:“I am married.”只是很客观地、平静地说明“我已经结婚了”这个事实;而“I have married.”则带有感情色彩,只适用于新婚不久的情况,比如“我”表现出兴奋的样子,见到朋友,满脸幸福地向朋友们宣布“我已经结婚了(I have married.)”。
这即是完成时所要表达的“对现在的影响”。这种新婚时的兴奋劲一过,以后再向别人作自我介绍时说“我已经结婚了”,就只能说成“I’m married.”。
比如萨达姆刚刚被美军抓住时, 新闻报道就可以用现在完成时态说:
Saddam has been captured. 意思相当于“Saddam is captive.”。
肯尼迪刚刚被暗杀后,就可以说:
Kennedy has been assassinated. 意思相当于“Kennedy is dead.”。
但是,随着时间的改变,语境也就变了,“萨达姆被抓”“肯尼迪被杀”离现在都比较久远了,因此,现在就不便说“Saddam has been captured.”和“Kennedy has been assassinated.”,而只能用一般过去时并加上具体的过去时间状语说成“Saddam was captured on 14 Dec. 2003.”和“Kennedy was assassinated on 22 Nov. 1963.”。

“动作表达”的完成时态与“状态表达”的完成时态

在英语中,“动作表达”的完成时态强调最近发生的事件,而“状态表达”的完成时态强调“较远的过去”经历。
His father has died.
表示“他爸爸已经死了”,因为has died是“动作表达”,此时通常要理解成最近的事件。而
His father has been dead. *
这是“状态表达”,强调过去的经历,所以表示“他爸爸曾经死过 (但现在又活过来了)”,显然不通,因此被认为是错句。
be married是“状态表达”,所以它的现在完成时态一般表示“曾经的经历”,因此:
I have been married. 表示“我曾经结过婚”。
但是, 对于不能明确区分是动作还是状态的谓语,则会产生歧义。比如:
He has been fired.
因为be fired既可以是“动作表达”也可以作为“状态表达”,既可以理解成最近一次动作——“他被开除了”,也可以理解成曾经的经历——“他曾经被开除过”。
如果句子的谓语既可以作为动作,也可以作为状态,此时英文就有歧义,区分要靠语境。

完成时态用于最高级句型

英文常常把现在完成时态用于这样的结构中:
“最高级+名词+that从句+现在完成时谓语”
This is the most interesting novel that I’ve ever read. 这是我看过的 最有趣的小说。
This is the hardest job that I’ve ever done. 这是我做过的最难的工作。

在这个句型结构中,除了用最高级外,还可以用序数词(如 second)来修饰名词。此时,从句的谓语同样要用现在完成时态。
This is the first time that I’ve come to Beijing. 这是我第一次来北京。
This is the third time that I’ve come to Paris. 这是我第三次来巴黎。

在上述句型中,主句的谓语若是一般过去时,比如was(如It was the second/best…),that后面的句子的谓语要用过去完成时态。例如:
That was the tenth cup of coffee that I had drunk that night. 那是我那天晚上喝的第10杯咖啡。

时间连词since的特殊用法

I have worked in this company since I left school. 自从毕业离校以来,我就一直在这家公司工作。
这个例句中的since作为时间连词,意思是“自从……以来”。与它有关的主句和从句的时态搭配关系是:since后面所接从句的谓语要用一般过去时态,与其搭配的主句谓语则用现在完成时态。
It has been three years since I worked in this company.
这个句子我们很容易错误地理解为:
我在这家公司工作已经有三年了。 *
也就是将这句话完全等同于: I have worked in this company for three years now.
其实,这句英文真正要表达的意思是:
It has been three years since I last worked here in this company. I have NOT worked in this company during the past three years.
这句话是要强调“我最后一次在这家公司工作是在三年前”,换句话说,“我过去三年间都没有在这家公司工作”,即“我离开这家公司已经有三年了”。
通过比较上述两个since引导的从句的谓语动词left和worked,会发现,left是典型的“短暂动词”,而worked则是“延续动词”。问题就出在动词动作的延续性上,因为since后面接延续性或短暂性动词,用于不同时态,所表达的意义是有区别的。

since+短暂动词

主句用现在完成时,since后面的从句用一般过去时。
I have worked in this company since I have left school.
自从毕业离校以来,我就一直在这家公司工作。
It has been three years since I have came to China.
我来中国已经有三年了。
以上这两个例句里的since引导的从句的谓语动词left和came都是典型的短暂动词,而且这些动作都是在过去发生的,所以自然要用一般过去时态。实际上,这里的谓语动词也可以采用现在完成时态,句子的意思不变。比如上面这两个句子也可以这样说:
I have worked in this company since I have left school.
It has been three years since I have come to China.
综上所述,since后面接短暂动词时,用一般过去时态或现在完成时态均可,而且意思一样,都表示从句动作“结束”以来,主句活动在持续。翻译成中文时,句子的意思就按英文字面去理解。比如leave是短暂动词,不论用于一般过去时态(left)还是用于现在完成时态(have left),都表示leave的动作结束后,主句活动work才开始并且一直在持续(即离开学校后就一直在这家公司工作)。

since+延续动词

当since接延续动词时,用一般过去时态或现在完成时态均可,但意思不一样。若用一般过去时态,则表示从句动作“结束”以来,主句活动在持续;若用现在完成时态,则表示从句动作“开始”以来,主句活动在持续。
1) It’s been three years since I worked in this company.
2) It’s been three years since I have worked in this company.
在例句1)中,worked是延续动词用于一般过去时态,主句时间则是从work这个活动“结束”后开始算起到现在有三年了。
在例句2)中,have worked是延续动词用于现在完成时态,主句时间则是从work这个活动“开始”以来算起到现在有三年了。
1)我不在这家公司工作有三年了。
2)我在这家公司工作有三年了。

It’s two years since I was in this university.
这里表示延续状态的动词be用了过去式was,应该是表示从was in this university的状态结束后开始计算时间,所以此句应翻译为:
我大学毕业已经有两年了。 而不能按照字面理解为:我上大学已经有两年了。*
“我上大学已经有两年了”应该说成“It’s two years since I have been in this university.”。
注意:since引导的主句如果单纯表示时间,可以说“It is或has been+时间段+since…”,所以这句话也可以说成“It’s been two years since I have been in this university.”。