TimeA wall-clock time of day — no date, no zone: the type for "the shop opens at 9:40". Arithmetic with a Duration WRAPS around midnight (a zoneless clock has nowhere else to go); until: answers the signed Duration between two clock readings within one day. It meets dates through Date#atTime:zone: and DateTime#time.
((Time.hour:23 minute:30) + (Duration.hours:1)).s "* -> 00:30:00
The wall-clock time, as ISO 8601 ('09:40:00'; Time.parse: reads it back).
The wall-clock time at the given hour (0–23) and minute (0–59), at zero seconds. Out-of-range components throw a ValueError.
(Time.hour:9 minute:40).s "* -> 09:40:00
The wall-clock time at the given hour, minute, and second (0–59).
00:00:00 — the first instant of a day.
The time an ISO 8601 string ('09:40:00', fractional seconds allowed) denotes; not parseable → ValueError.
(Time.parse:'09:40:30').second "* -> 30
The clock reading a Duration later, WRAPPING around midnight — a zoneless clock time has no date to carry into.
((Time.hour:23 minute:30) + (Duration.hours:1)).s "* -> 00:30:00
The clock reading a Duration earlier, wrapping below midnight.
Whether the receiver is the earlier clock reading (midnight is least). Only <: is native; the rest derive on Object.
Whether the argument is the same clock reading. A non-Time is simply unequal.
The hour component (0–23).
The minute component (0–59).
The subsecond component in nanoseconds (0–999,999,999).
The ISO 8601 time string (subseconds only when present).
(Time.hour:9 minute:40).s "* -> 09:40:00
The second component (0–59).
The signed Duration from the receiver to the argument, read within one day — negative when the argument is the earlier clock reading (nothing wraps: 23:00 until 01:00 is -22h, not 2h).
((Time.hour:9 minute:0).until:(Time.hour:17 minute:30)).s "* -> 8h 30m