would have done是对过去的虚拟,would do是对现在或将来的虚拟
第二句正确,“come to the party”是过去发生的事,句子对过去虚拟,所以用would have done
顺带说一句,这句句子是混合虚拟语气。如果是正常的虚拟语气句,主句的时态是用过去完成时,但是主句中有明显的时间词yesterday,所以就用了一般过去时。
第二个句子正确。
would do只是表示过去应该做某事。
would have done表示应该去做但是结果没有做,里面暗含后悔、遗憾之意。
例:
because of the bad weather,he would have arrived here yeaterday.
由于坏天气,要不昨天他就该到了。
his mother asked him to visit his sick granny, otherwise he would have finished the report.
他的妈妈要求他去探望生病的奶奶,否则他已经完成那篇报告了。
希望你能理解。
都不对
应该是He had been very busy yesterday otherwise he would have come to the party.
这句是对过去的虚拟所以主句要用过去完成时had+done,从句用过去将来完成时would+have+done
对现在的虚拟主句要用一般过去时did,从句用过去将来时would+do,如
If I were you,I would......(be动词在虚拟语气中只能用were,不能用was)
would have done 是和过去相反
第二个对
虚拟语气:与现在事实相反的,从句用过去时,主句用would+do
与过去事实相反的,主句用would have done
第二句正确。