Skip to content

intervalUnionDateTime

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

Return the combined span of two datetime intervals, or null when they are disjoint.

  • Uses Temporal.PlainDateTime.compare for comparison.
  • Overlapping intervals return their merged span.
  • Adjacent intervals (e.g. aEnd === bStart) share one instant and ARE merged.
  • Returns null if either interval is invalid (start > end).
  • Returns null on invalid input (wrong type, malformed strings).
Parameter Type Description
aStart string ISO 8601 datetime string for the first interval start
aEnd string ISO 8601 datetime string for the first interval end
bStart string ISO 8601 datetime string for the second interval start
bEnd string ISO 8601 datetime string for the second interval end

{ start, end } with the merged span, or null on invalid input / disjoint intervals

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

plain/interval/intervalUnionDateTime.ts