“So, are you ready for the big power outage on Sunday?” a colleague asks on Thursday.
“You mean Saturday.”
“No… Sunday morning.”
“Um, I was told two months ago, and countless times between, that the outage is on Saturday, midnight to 8 AM, and they were starting to shut things down at 10 PM.”
“It’s Sunday, midnight to 8 AM. They’re going to start shutting things down on Saturday at 10 PM.”
“Did they move the outage?”
“No, I bet they were just telling you when things were going to start. On Saturday.”
Midnight is 00:00, meaning the start of a new day. Always.
If you’re in doubt, use 00:01. Assume everybody is clueless about time, because they are. For example, a lot of people think in terms of when they go to sleep, not what actual time it is, so if they’re still up at 0200 on Sunday they consider it to be Saturday. While that’s wrong, and makes visions of their painful, torturous death flash in your mind, it’s a fact of life. Deal with it.
Be precise. Use 24-hour time, because there is no AM/PM question. 24 hour time runs between 0000 and 2359 on any given day. There is no 2400.
Last, all times should be accompanied by days, and vice-versa. It’s like units in science classes. You didn’t just write “1.67,” you wrote “1.67 meters.” It isn’t “0800,” it is always “0800 on 4/18/2010.” Times are useless without dates. And if your team or customers are not all in the same time zone, and they rarely are, you need that information, too.
“The system shutdowns will commence at 2200 on 4/17/2010, the power will be disconnected at 0000 on 4/18/2010, and power-ups will occur again at 0800 on 4/18/2010. All times are in CDT (-0500).”
 Yes, I am aware there are sometimes leap seconds, which get added to the end of a day, thus causing a 23:59:60. 99.99%+ of all outage planning does not need to take this into account.
 And even if they are, it doesn’t hurt to add that information.