A.shoud not have done不该做某事(但实际应该做了)
needn`t have done不必要做(但实际上还是做了)
后面两个意思可以照着上面的理解,因为都是虚拟语气,所以表示的意思相反
D.must have been 那时一定是(PS:你那个句子后面是不是省略了一个冠词“a”啊)
would be 表示对将来的假设
would have been 本应该是(但实际不是)
must be 一定是(一般用在现在时)
C.shoud have done应该做某事(但实际没做)
这些基本都是考察虚拟语气的吧