夏季到来,酷暑难熬,这时你突然想起来之前坏了的空调一直还没找人来修。

You should have had it repaired earlier.

早该让人来修了对不对?等到热成狗了才开始着急是不是太晚了点?句中should have done表示“本应该做某事”。但事实上本来没做,所以是个虚拟语气,类似于should这样的情态动词表示虚拟有好几种情况:

(1) could have done: 大家知道could是can的过去式,can又是表示“有能力做某事”,所以这个结构表示对过去的虚拟,意思是“本可以做某事(然而并没有)”。

He could have passed the exam, but he was too careless. 他本可以通过考试的,但他太粗心了。

(2) might have done: 表示对过去事情弱弱地猜测,多用于虚拟语气(说话人通常没啥底气)。

She might have given you much help, though she was busy. 她也许给了你很多帮助,尽管她很忙。

(3) would have done:would用于过去将来时,表示动作的趋向,这个结构表示“本来会做某事”。

I would have went to the hospital, but I felt much better. 我本来会去医院的,但我感觉舒服多了。

(4) need have done: 本来需要做某事而没做,它还有否定形式needn’t have done,表示“本来不需要做某事而做了”。

I need have finished all the task, but he came and helped me. 我本来需要完成所有的任务,但他过来帮我了。

You needn’t cooked so much, only five people came. 你本不需要做那么多菜,只有五个人来吃饭。

(5) should have done: 最后我们再来呼应一下开头,表示“本应该做而没做”,常常是你妈责备你的时候。同样也有shouldn’t have done,表示“本不应该做某事而做了”。

Tom, you are too lazy. You should have finished your homework yesterday. 汤姆,你太懒啦。你应该昨天就完成作业的。

I shouldn’t have been angry at him. He had no fault. 我不该对他生气的。他没有错。

关于情态动词表虚拟的用法就这么多,都是对于过去的虚拟。就是“XX+ have done”具体的意思就根据XX去联想啦!