The correct option is A will have been
The given sentence states an action that will be completed by a certain point of time in future: by midnight
Hence the sentence is in the future perfect tense. The future perfect tense also describes an action that will be completed at a given point of time in the future.
The verb form in this tense is: will have + past participle (been)
Hence option A 'will have been' is correct.
Options B and C: 'Have been' refers to the present perfect tense. It describes an action that began in the past and was completed in the present.
'Has been' also refers to the present perfect tense. The only difference is that 'has' is in the third person narrative, 'have' is in the first and second person.
These tenses do not agree with the given sentence that states a future action.
Option D: 'Will be' is in the simple future tense whereas the given sentence is in future perfect. The future simple describes an action that will take place in the future, but it does not specify exactly when, like it does over here.
Hence options B, C and D are incorrect.