Skip to content

intervalsOverlapDateTime

intervalsOverlapDateTime(aStart: string, aEnd: string, bStart: string, bEnd: string): boolean

Return true when the half-open datetime intervals [aStart, aEnd) and [bStart, bEnd) share at least one moment.

  • Half-open: an interval holds every t with start <= t < end, so end itself is not in it (the rule CORE-6’s intervalsOverlap uses). The test is aStart < bEnd && bStart < aEnd.
  • Touching intervals (aEnd equal to bStart) share no moment and do not overlap.
  • An empty interval (start === end) overlaps only an interval it lies strictly inside.
  • Uses Temporal.PlainDateTime.compare for comparison.
  • Returns false if either interval is invalid (start > end).
  • Returns false on invalid input (wrong type, malformed strings).
ParameterTypeDescription
aStartstringISO 8601 datetime string for the first interval start
aEndstringISO 8601 datetime string for the first interval end (excluded)
bStartstringISO 8601 datetime string for the second interval start
bEndstringISO 8601 datetime string for the second interval end (excluded)

true if intervals overlap, or false on invalid input

import { intervalsOverlapDateTime } from "@northguild/gmt/plain/interval";
intervalsOverlapDateTime("2024-01-01T09:00:00", "2024-01-01T13:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // true
output 

plain/interval/intervalsOverlapDateTime.ts