Skip to content

intervalDivideEquallyUtc

intervalDivideEquallyUtc(start: string, end: string, n: number): { start: string; end: string; }[]
import { intervalDivideEquallyUtc } from "@northguild/gmt/utc/interval";

Split a UTC interval into n equal-length sub-intervals.

  • Returns an array of n { start, end } records that tile the original interval, each record’s end equal to the next record’s start.
  • Boundaries are computed from the total elapsed nanoseconds (via Duration.prototype.total with relativeTo set to start) — no DST is involved, since UTC has no time zone offset.
  • n === 1 returns the original interval unchanged, as a single-element array.
  • A zero-length interval (start === end) returns n identical zero-length sub-intervals.
  • Returns [] when n is not a positive integer, or on invalid input (unparseable start/end, start > end, leap-second strings).
Parameter Type Description
start string ISO UTC datetime string for the interval start
end string ISO UTC datetime string for the interval end
n number number of equal sub-intervals to produce (positive integer)

array of n { start, end } records, or [] on invalid input

intervalDivideEquallyUtc("2024-01-01T00:00:00Z", "2024-01-04T00:00:00Z", 3) // [{ start: "2024-01-01T00:00:00Z", end: "2024-01-02T00:00:00Z" }, { start: "2024-01-02T00:00:00Z", end: "2024-01-03T00:00:00Z" }, { start: "2024-01-03T00:00:00Z", end: "2024-01-04T00:00:00Z" }]
intervalDivideEquallyUtc("2024-01-01T00:00:00Z", "2024-01-04T00:00:00Z", 1) // [{ start: "2024-01-01T00:00:00Z", end: "2024-01-04T00:00:00Z" }]
intervalDivideEquallyUtc("2024-01-01T00:00:00Z", "2024-01-04T00:00:00Z", 0) // []
intervalDivideEquallyUtc("invalid", "2024-01-04T00:00:00Z", 3) // []

utc/interval/intervalDivideEquallyUtc.ts