Skip to content

isValidZonedInterval

isValidZonedInterval(start: string, end: string): boolean
import { isValidZonedInterval } from "@northguild/gmt/zoned/interval";

Return true if start and end form a valid zoned interval — both parseable as

  • ISO ZonedDateTime strings and the instant at start is <= the instant at end.
  • Both inputs must be valid ISO 8601 zoned datetime strings.
  • Equal start === end is valid.
  • Comparison is done by instant, so intervals spanning DST transitions are compared by absolute time.
  • Rejects any [u-ca=...] calendar annotation (E5 issue #78, decision of record D2) — see isValidZonedDateTime’s JSDoc for why.
  • Invalid input, malformed strings, or leap-second strings return false.
Parameter Type Description
start string ISO ZonedDateTime string (interval start)
end string ISO ZonedDateTime string (interval end)

true if start and end form a valid zoned interval, or false on invalid input

isValidZonedInterval("2024-01-01T10:00:00+00:00[UTC]", "2024-12-31T23:59:59+00:00[UTC]") // true
isValidZonedInterval("2024-06-15T12:00:00-04:00[America/New_York]", "2024-06-15T12:00:00-04:00[America/New_York]") // true
isValidZonedInterval("2024-12-31T23:59:59+00:00[UTC]", "2024-01-01T10:00:00+00:00[UTC]") // false
isValidZonedInterval("2024-01-01T10:00:00+00:00[UTC][u-ca=hebrew]", "2024-12-31T23:59:59+00:00[UTC]") // false (calendar annotation rejected)
isValidZonedInterval("invalid", "2024-12-31T23:59:59+00:00[UTC]") // false

zoned/interval/validate/isValidZonedInterval.ts