表示时间的词 for,since(参见第 187节),all day/night/week, all my等life,all the time,always,lately,never,recently
A现在完成时用来表示一个从过去开始而且将继续到现在说话时间之后的动作:
He has been in the army for two years.
他在军队里已经服役两年了。(他还在军队里。)
I have smoked since I left sohool.
我离开中学以来一直抽烟。(我仍然抽烟。)
We have waited all day.
我们等了整整一天了。(现在仍在等。)
He has lived here all his life.
他一辈子都住在这里。(他还住这里。)
He has always worked for us.
他一直在为我们工作。(他现在仍在为我们工作。)
这种类型的动作可以用图解表示为:
{ewc MVIMAGE,MVIMAGE, !461336T1.bmp}
可以把上述例句和下面例句相比:
He was in the army for two years.
他在军队里呆了两年。(他现在不在军队里。)
I smoked for six months.
我抽了六个月烟。(然后戒了烟。)
He lived here all his life.
他一辈子都住在这里。(可能他现已去世。)
以上三个例句都与已完时段有关:
{ewc MVIMAGE,MVIMAGE, !461336T2.bmp}
所以要用一般过去时。(参见第117节B。)
B但是现在完成时有时可以用来表示一个开始于过去而正巧在说话时刻结束的动作:
Ann(on meeting someone):I haven’t seen you for ages.
安(遇见了某人):我很久没见到你了。(但现在看到了你)
This room hasn’t been cleaned for months.
这房间已有好几个月没有清扫了。(但我们现在正在打扫)
It has been very cold lately but it’s just beginning to get warmer.
近来天气一直很冷,但现在开始暖和了。
这种类型的动作可以用图解表示为:
C 表示知道、相信和理解等的动词不能用于现在完成时,只有上文A中所述的情况例外:
I have known him for a long time.
我已经认识他很长时间了。
I have never believed their theories.
我从来就不信他们的理论。
因此,最近的动作即使未指明时间,也必须用一般过去时来表示:
Did you know that he was going to be married?
你知道他要结婚了吗?(这里不能用Have you known)
Hello!I didn’t know you were in London.How long have you been here?
你好!我本不知道你在伦敦。你在这里多久了?
但think和wonder可以按第185节D中的用法使用:
I have sometimes thought that I should have emigrated.
我有时想我早该移居国外。
I have often wondered why he didn’t marry her.
我常常纳闷他为什么不娶她。
D注意以下问答:
—How long have you been here?
—I’ve been here six months.
—你到这里多久了?
—我到这里已经六个月了。
继这种回答之后,一般常用现在完成时对已提到的这一时期之内的动作进行提问。这一段时期可以认为是未终结的时间段,用下图来表示:
因为停留、存在等动作都还没有结束:
Have you been to the zoo/the theatre/the museums/the casino?
你去过动物园/戏院/博物馆/娱乐场吗?
Have you enrolled in a school/found a job/met many people?
你已经入学/找到工作/见许多人了吗?
如果未提到时间,回答也用同一时态,否则就要用一般过去时:
Yes,I have(been to the zoo etc)/Yes,I went there last week.
对,我去过了。/对,我上周去了。
No,I haven’t enrolled yet./Yes,I enrolled on Monday/this morning.
不,还没有。/对,周一/今早入的学。