intervalEngulfsZoned
Signature
Section titled “Signature”intervalEngulfsZoned(aStart: string, aEnd: string, bStart: string, bEnd: string): booleanReturn true when the half-open interval B [bStart, bEnd) lies within the half-open interval A [aStart, aEnd) — every instant of B falls within A.
- Uses
Temporal.Instant.comparefor comparison (via.toInstant()). - B is inside A when the intervals overlap and
aStart <= bStartandbEnd <= aEndby instant. Both ends are exclusive, so B may start at A’s start and end at A’s end. - An empty B counts only strictly inside A, the same edge rule as
clampInterval; at either edge of A it returnsfalse, and an empty A engulfs nothing. - Equivalent to 4-argument
intervalContainsZoned(aStart, aEnd, bStart, bEnd). - 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 outer interval start |
aEnd | string | ISO 8601 zoned datetime string for the outer interval end |
bStart | string | ISO 8601 zoned datetime string for the inner interval start |
bEnd | string | ISO 8601 zoned datetime string for the inner interval end |
Returns
Section titled “Returns”true if B is fully contained in A, or false on invalid input
Examples
Section titled “Examples”import { intervalEngulfsZoned } from "@northguild/gmt/zoned/interval";
intervalEngulfsZoned("2024-01-01T09:00:00+00:00[UTC]", "2024-12-31T17:00:00+00:00[UTC]", "2024-06-01T12:00:00+00:00[UTC]", "2024-07-01T13:00:00+00:00[UTC]") // true