Here’s my take on this, for what it’s worth. The m in am and pm stands for meridiem - Latin for midday. Precisely 1200 is neither before (ante) nor after (post) midday. 0000 is more problematic. As written it is clearly the beginning of the new day, therefore am.
Written 12 midnight (or 2400), it is the end of the old day, therefore pm. By this reasoning one 12 o’clock is neither am nor pm while the other can be either. I agree they should be written as 1200 noon and 1200 midnight to avoid ambiguity.
No. If using the 24 hour clock you write 00:00 and 12:00.
If using the 12 hour clock, you don’t need the 00 as it is an exact hour. So write 12 midnight and 12 noon.
Further thoughts. 1200 represents a period of time lasting one minute, rather than an instant in time. Most of that minute (arguably all of it) is after midday and is, therefore best represented as 1200pm. Likewise the minute represented by 0000 is earlier in the same day, so 1200am.
Comments
If using the 12 hour clock, you don’t need the 00 as it is an exact hour. So write 12 midnight and 12 noon.