DateTimeRange
A DateTimeRange is a start + end pair with sub-day precision. It
is parallel to DateRange (which is day-granularity); the two are
intentionally separate types so the granularity is visible at the
type level.
Where it’s used
Meeting#occurred_date_range— the actual start and end times of a meeting (e.g. a meeting that ran 09:00–11:30).Meeting#scheduled_date_rangeremains aDateRangebecause forward planning is usually at the day level.
Wire shape
occurred_date_range:
start: 2026-03-12T09:00:00+00:00
end: 2026-03-12T11:45:00+00:00
Why not extend DateRange?
Two parallel types keep the granularity visible at the type level:
- A caller who sees
DateRangeknows it is day-granularity. - A caller who sees
DateTimeRangeknows sub-day precision is available.
MeetingComponent#starts_at / #ends_at already use DateTime for
sub-day precision at the component level; DateTimeRange brings the
same precision to the meeting level without changing the existing
DateRange contract.
Reference
- ISO 8601-1 — date/time format.