I've read in various places the first minute of a day described as 12:00am. Now, whilst I personally prefer to use 24h clock notation and therefore don't have this problem as I can simply describe this minute as 00:00, how is one supposed to express this time using am/pm notation? Is 00:00am common (strange because there is no 00:00pm), or is the least-bad way to say 12:00am (strange IMHO because it seems to imply that the previous hour was 11:00am when it was actually 11:00pm)?
The Wikipedia article 12 Hour Clock is worth quoting at length:
Confusion at noon and midnight
It is not always clear what times "12:00 a.m." and "12:00 p.m." denote. From the Latin words meridies (midday), ante (before) and post (after), the term ante meridiem (a.m.) means before midday and post meridiem (p.m.) means after midday. Since strictly speaking "noon" (midday) is neither before or after itself, the terms a.m. and p.m. do not apply. However, since 12:01 p.m. is after noon, it is common to extend this usage for 12:00 p.m. to denote noon. That leaves 12:00 a.m. to be used for midnight at the beginning of the day, continuing to 12.01 a.m. that same day.
However, because practical confusion is still possible, some style guides recommend replacing "12:00 p.m." with "12:00 noon" and "12:00 a.m." with "12:00 midnight".
The American Heritage Dictionary of the English Language (Fourth Edition, 2000) has a usage note on this topic: "Strictly speaking, 12 a.m. denotes midnight, and 12 p.m. denotes noon, but there is sufficient confusion over these uses to make it advisable to use 12 noon and 12 midnight where clarity is required."
Many U.S. style guides, and NIST's "Frequently asked questions (FAQ)" web page, recommend that it is clearest if one refers to "noon" or "12:00 noon" and "midnight" or "12:00 midnight" (rather than to "12:00 p.m." and "12:00 a.m."). Some other style guides suggest "12:00 n" for noon and "12:00 m" for midnight.
The Canadian Press Stylebook (11th Edition, 1999, page 288) says, "write noon or midnight, not 12 noon or 12 midnight." Phrases such as "12 a.m." and "12 p.m." are not mentioned at all.
The use of "12:00 midnight" or "midnight" is still problematic because it does not distinguish between the midnight at the start of a particular day and the midnight at its end. To avoid confusion and error, some U.S. style guides recommend either clarifying "midnight" with other context clues, or not referring to midnight at all. For an example of the latter method, "midnight" is replaced with "11:59 p.m." for the end of a day or "12:01 a.m." for the start of the next day. That has become common in the United States in legal contracts and for airplane, bus, or train schedules, though some schedules use other conventions.
My advice is to use "12:00 noon" instead of "12:00 p.m." and "12:00 midnight" instead of "12:00 a.m." Realize that readers may be confused which day 12:00 midnight belongs to, so make sure context makes it clear.
Anyone who has ever had the kind of digital clock common here in the United States will have observed that the clock, when reset, starts at midnight: it reads 12:00 with the AM indicator set or the PM indicator not set, as the case may be. Then it proceeds for twelve hours to 11:59. After 11:59 it restarts the whole sequence at 12:00 but toggles the status of the AM/PM indicator. This process repeats every 12 hours: reach 11:59, then on the next minute read 12:00 but toggle the status of the AM/PM indicator. Thus the minute that succeeds 11:59PM is 12:00AM.
Legally speaking 12:00 am and 12:00 pm DO NOT exist and should NEVER be used in any contract, statute or anything else that could wind up in court (unless a specific jurisdiction has codified the terms, of which I am unaware). For example look at your car insurance card: most likely it states that the coverage is good from 12:01 am through 11:59 pm on dates in question. Now that doesn't mean there's a two minute gap upon renewal as it's legally understood that coverage runs from the very beginning of the day (12:00:00.0001- am) to the very end of the day (11:59:59.9999+ pm). I understand that some digital clocks and common perception may favor 12:00 am as midnight and 12:00 pm as noon, but that's purely personal preference and enough ambiguity exists to render both terms legally useless. In Latin AM (ante meridian) means before midday and PM (post meridian) means after midday. Since 12:00 noon is neither before nor after midday (it IS midday) it cannot be AM or PM. As for 12:00 midnight it could refer to AM (12 hours before the upcoming noon) or PM (12 hours after the preceding noon). Thus to avoid any confusion you should always use "noon"/"midnight", 11:59/12:01 or rely on the 24-hour clock designation.
There is a subtle distinction with digital clocks that has not been mentioned. Most digital clocks display minutes but not seconds. So a valid interpretation of "12:00 AM" on a digital clock is "you are now in the minute that began at 12:00, and it is now ante meridian (AM, that is, before noon). True, the correct suffix, AM, PM, or neither, that should be used to label the instant of midnight is debatable, but since an instant lasts for an infinitesimal length of time, the display is correct for 99.999... percent of the minute.
When one is considering static text (like a contract), rather than a changing display, one can indeed discuss an instant so the correct notation (if any exists) to represent noon or midnight with numerals becomes important.