intervalsOverlapZoned
Signature
Section titled “Signature”intervalsOverlapZoned(aStart: string, aEnd: string, bStart: string, bEnd: string): booleanReturn true when the half-open intervals [aStart, aEnd) and [bStart, bEnd) share at least one instant.
- Uses
Temporal.Instant.comparefor comparison (same instant semantics):aStart < bEnd && bStart < aEnd, the same rule asintervalsOverlap(SQL:2011OVERLAPSon closed-open periods). - An interval excludes its
end, so touching intervals (aEndthe same instant asbStart) do NOT overlap — returnsfalse. - An empty interval (
startandendthe same instant) overlaps an interval only when it lies strictly inside it; at either edge, or against another empty interval, it returnsfalse. - Returns
falseif either interval is invalid (start > end). - Returns
falseon invalid input (wrong type, malformed strings, leap seconds). - Accepts mixed calendar systems (E7’s D4-zoned, issue #152): both bare ISO zoned strings and RFC 9557 calendar-annotated ones (
"2024-02-24T14:30:00-05:00[America/New_York][u-ca=hebrew]"), and the two endpoints need not agree on a calendar. Ordering is calendar-independent — verified thatTemporal.Instantcarries no calendar field at all and thatInstant.compare/ZonedDateTime.compareboth return0for the same instant expressed in hebrew, islamic-civil, japanese and iso8601. - Rejects a calendar annotation before the time zone annotation, which is not RFC 9557.
- Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, the
[u-ca=<id>]annotation after the zone, canonical calendar ids); seeisValidCalendarZonedDateTime.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
aStart | string | ISO 8601 zoned datetime string for the first interval start |
aEnd | string | ISO 8601 zoned datetime string for the first interval end |
bStart | string | ISO 8601 zoned datetime string for the second interval start |
bEnd | string | ISO 8601 zoned datetime string for the second interval end |
Returns
Section titled “Returns”true if intervals overlap, or false on invalid input
Examples
Section titled “Examples”import { intervalsOverlapZoned } from "@northguild/gmt/zoned/interval";
intervalsOverlapZoned("2024-01-01T00:00:00+00:00[UTC]", "2024-06-30T23:59:59+00:00[UTC]", "2024-04-01T00:00:00+00:00[UTC]", "2024-12-31T23:59:59+00:00[UTC]") // true