Skip to content

intervalsOverlapDateTime

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

Return true when intervals [aStart, aEnd] and [bStart, bEnd] share at least one instant.

  • Uses Temporal.PlainDateTime.compare for comparison.
  • Adjacent intervals (e.g. aEnd === bStart) do NOT overlap — returns false.
  • Returns false if either interval is invalid (start > end).
  • Returns false 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

true if intervals overlap, or false on invalid input

intervalsOverlapDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-04-01T00:00:00", "2024-12-31T23:59:59") // true
intervalsOverlapDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-07-01T00:00:00", "2024-12-31T23:59:59") // false (adjacent)
intervalsOverlapDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-07-02T00:00:00", "2024-12-31T23:59:59") // false (disjoint)
intervalsOverlapDateTime("invalid", "2024-06-30T23:59:59", "2024-04-01T00:00:00", "2024-12-31T23:59:59") // false

plain/interval/intervalsOverlapDateTime.ts