Okay, Dave - I agree that midnight does exsist because midnight = 0000 hours(Z) and midnight (0000 hours) would be at the start of the day on 01/01/2004 -
not at the end of the day on 12/31/2003 as some would believe.
Just for grins and I really think you (I know I did) may learn something from this - the following is extracted from here
A need for a standardization of time keeping evolved with the increase in international commerce and the development of communication systems. The Earth's Coordinates System became the natural choice as a prime reference. The current coordinate system was agreed upon in 1884 by the International Meridian Conference in Washington, DC. The conference established that the Prime Meridian will be the line of longitude that passes through Greenwich, England. The prime meridian (0 degrees) and the 180 degrees; meridian form a great circle. The 180 degrees meridian was designated as the international Date Line. It was agreed that at noon in Greenwich the date is changing at the 180 degrees longitude. Greenwich Mean Time (GMT), became the international global time reference. GMT is reported in a 24 hours system suffixed by the letter Z (or Zulu)
beginning at midnight (0000Z). GMT was later changed into Universal Coordinated Time (UTC). The UTC time is measured with astronomical techniques at the Greenwich astronomical observatory in England. It corresponds with a good approximation to the mean solar time at the observatory.
Because the Earth is constantly rotating, the time is also constantly changing. This change can be easily calculated. Since there are 24 hours in a day (or 1440 minutes), the rate of change is 4 minutes for each degree of longitude (1440/360). It follows that the rate of change for each minute of longitude is 4 seconds (4/60 of a minute). However this computation is merely academic. For practical reasons the Earth was divided into 24 time zones, each representing one hour. Each zone is 15 degrees wide. Zone zero is the zone which extends from 7° 29'59'' W to 7° 29'59' E. To express the time in UTC the zone number should be added to the local time when west of the prime meridian and subtracted when east of it.
The time zone can be calculated by dividing the longitude by 15, (i.e. the time zone on the 150 degrees east longitude is 150/15=10E), which means that the time on the 150 degrees east meridian is 10 hours later than in Greenwich. It is important to indicate that each time zone is approximately 15 degrees wide, representing one hour intervals. For example, the center of time zone 5W is the 75 degrees west meridian and it extends from the 67° 30'00''W meridian to the 83° 29'59"W meridian.
To convert the local time to UTC, it should first be converted to a 24 hour system. The time zone should be subtracted when east of the prime meridian and added when west of it. For example, 10:45 P.M. in New York is 22:45 in a 24 hour system. Since New York is in the 5 degrees west time zone, 5 hours must be added to the New York local time (22:45 + 05:00 = 27:45). A result greater than 24 hours indicates a change of the date. When that is the case, 24:00 hours should be subtracted from the result to get the correct time. By subtracting 24:00 from 27:45 we get the time in UTC as 3:45Z on the next day. Respectively, if subtracting the time zone from the local time results in a negative number, it indicates that the previous date is still valid in UTC. To get the time in UTC the negative number should be added to 24:00, i.e. if the time in Cairo, Egypt, which is located in time zone 2 dgrees east is 0100, the subtraction of 0200 hours from 0100 results in -1. This indicates that the UTC date has not changed yet and that the time is 24:00 + (-1) or 2300Z on the previous day.
Now this should really confuse quite a few folks - but us who use to frag planes all around the globe understand it and my working from 2300 hours (currently CST) until 0730 (CST) further strengthens my understanding!
Like you said Dave - different ways of thinking!