A time of day item in date strings specifies the time on a given
day. Here are some examples, all of which represent the same time:
20:02:00.000000
20:02
8:02pm
20:02-0500 # In est (U.S. Eastern Standard Time).
More generally, the time of day may be given as
‘hour:minute:second’, where hour is
a number between 0 and 23, minute is a number between 0 and
59, and second is a number between 0 and 59 possibly followed by
‘.’ or ‘,’ and a fraction containing one or more digits.
Alternatively,
‘:second’ can be omitted, in which case it is taken to
be zero. On the rare hosts that support leap seconds, second
may be 60.
If the time is followed by ‘am’ or ‘pm’ (or ‘a.m.’
or ‘p.m.’), hour is restricted to run from 1 to 12, and
‘:minute’ may be omitted (taken to be zero). ‘am’
indicates the first half of the day, ‘pm’ indicates the second
half of the day. In this notation, 12 is the predecessor of 1:
midnight is ‘12am’ while noon is ‘12pm’.
(This is the zero-oriented interpretation of ‘12am’ and ‘12pm’,
as opposed to the old tradition derived from Latin
which uses ‘12m’ for noon and ‘12pm’ for midnight.)
The time may alternatively be followed by a time zone correction,
expressed as ‘shhmm’, where s is ‘+’
or ‘-’, hh is a number of zone hours and mm is a number
of zone minutes. You can also separate hh from mm with a colon.
When a time zone correction is given this way, it
forces interpretation of the time relative to
Coordinated Universal Time (utc), overriding any previous
specification for the time zone or the local time zone. For example,
‘+0530’ and ‘+05:30’ both stand for the time zone 5.5 hours
ahead of utc (e.g., India). The minute
part of the time of day may not be elided when a time zone correction
is used. This is the best way to specify a time zone correction by
fractional parts of an hour.
Either ‘am’/‘pm’ or a time zone correction may be specified,
but not both.
Published under the terms of the GNU General Public License