RFC 5322, "Internet Message Format", October 2008Source of RFC: IETF - NON WORKING GROUP
Area Assignment: app
Errata ID: 5905
Status: Held for Document Update
Publication Format(s) : TEXT
Reported By: Edward Welbourne
Date Reported: 2019-11-13
Held for Document Update by: Barry Leiba
Date Held: 2019-11-13
Section 3.3 says:
The time-of-day specifies the number of hours, minutes, and optionally seconds since midnight of the date indicated. The date and time-of-day SHOULD express local time.
It should say:
The time-of-day specifies the number of hours, minutes, and optionally seconds since midnight of the date indicated or, when a time-zone transition has intervened in the interval, since the nominal midnight of the zone now in effect. The date and time-of-day SHOULD express local time.
The problem with the original text is its reading on the day of a time-zone transition.
For example, if the hour from 02:00 to 03:00 was repeated (a fall-back, as at the end of DST), then what local time refers to as 04:00 is 5 hours after midnight "of the date indicated" and what local time refers to as 23:59 is almost 25 hours after midnight. Likewise, if an hour early in the day has been skipped (a spring-forward, as at the start of DST), the time since midnight is one hour short of the local time, as normally understood; for example, 23:00 is only 22 hours after midnight.
There are zones in which transitions happen at midnight, for which 01:00 is midnight on a relevant day: at the other end of the year, there may then be a day that repeats 00:00, so may be argued to have two midnights (with a rather literal "midnight hour" in between).
I cannot think of a good replacement text, sad to say, but I have tried my (painfully verbose) best. I assume everyone has always just used the conventional meaning of local time (as per the SHOULD in the paragraph I haven't changed), without worrying about the inaccurate "since midnight" phrasing.