Skip to content

intervalIntersectionUtc

intervalIntersectionUtc(aStart: string, aEnd: string, bStart: string, bEnd: string): { start: string; end: string; }
import { intervalIntersectionUtc } from "@northguild/gmt/utc/interval";

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

  • Uses Temporal.Instant.compare for comparison (same instant semantics).
  • Adjacent intervals (e.g. aEnd === bStart) share one instant and DO overlap.
  • Returns null if either interval is invalid (start > end).
  • Returns null on invalid input (wrong type, malformed strings, leap seconds).
Parameter Type Description
aStart string ISO 8601 UTC datetime string for the first interval start
aEnd string ISO 8601 UTC datetime string for the first interval end
bStart string ISO 8601 UTC datetime string for the second interval start
bEnd string ISO 8601 UTC datetime string for the second interval end

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

intervalIntersectionUtc("2024-01-01T00:00:00Z", "2024-06-30T23:59:59Z", "2024-04-01T00:00:00Z", "2024-12-31T23:59:59Z") // { start: "2024-04-01T00:00:00Z", end: "2024-06-30T23:59:59Z" }
intervalIntersectionUtc("2024-01-01T00:00:00Z", "2024-06-30T23:59:59Z", "2024-07-01T00:00:00Z", "2024-12-31T23:59:59Z") // null
intervalIntersectionUtc("2024-01-01T00:00:00Z", "2024-06-30T23:59:59Z", "2024-07-02T00:00:00Z", "2024-12-31T23:59:59Z") // null
intervalIntersectionUtc("invalid", "2024-06-30T23:59:59Z", "2024-04-01T00:00:00Z", "2024-12-31T23:59:59Z") // null

utc/interval/intervalIntersectionUtc.ts