Skip to content

intervalIntersectionUtc

intervalIntersectionUtc(aStart: string, aEnd: string, bStart: string, bEnd: string): { start: string; end: string; } | null

Return the overlapping span of two UTC intervals, or null when they do not overlap.

  • Half-open: an interval holds every t with start <= t < end. The intersection is [max(aStart, bStart), min(aEnd, bEnd)) when aStart < bEnd && bStart < aEnd (CORE-6’s intersectIntervals), otherwise null.
  • Touching intervals (aEnd === bStart) share no instant and return null.
  • An empty interval (start === end) intersects only an interval it lies strictly inside, and then returns itself.
  • Delegates to CORE-6’s intersectIntervals once the arguments pass the UTC-string gate, and re-serialises the result, so it always equals that function’s answer in canonical Z form.
  • Returns null if either interval is invalid (start > end).
  • Returns null on invalid input (wrong type, non-Z strings, malformed strings, leap seconds).
ParameterTypeDescription
aStartstringISO 8601 UTC datetime string for the first interval start
aEndstringISO 8601 UTC datetime string for the first interval end
bStartstringISO 8601 UTC datetime string for the second interval start
bEndstringISO 8601 UTC datetime string for the second interval end

{ start, end } with the overlapping span, or null on invalid input / no overlap

Members

MemberTypeDescription
startstringThe instant the interval begins at, as an ISO 8601 UTC string ending in Z.
endstringThe first instant after the interval, in the same format as start. It is exclusive: the interval holds everything from start up to but not including this value. It can equal start, which makes the interval empty.
import { intervalIntersectionUtc } from "@northguild/gmt/utc/interval";
intervalIntersectionUtc("2024-01-01T09:00:00Z", "2024-01-01T13:00:00Z", "2024-01-01T12:00:00Z", "2024-01-01T17:00:00Z") // { start: "2024-01-01T12:00:00Z", end: "2024-01-01T13:00:00Z" }
output 

utc/interval/intervalIntersectionUtc.ts