Skip to content

intervalLengthUnix

intervalLengthUnix(start: string | number, end: string | number, unit: string, options?: { epochUnit?: UnixUnit; timeZone?: string; }): number | null

Return the exact length of a Unix epoch interval in unit, as a real (possibly fractional) number.

  • Distinct from intervalCountUnix, which counts local calendar unit boundaries crossed rather than measuring exact duration.
  • start and end are each a safe integer or a string of optionally negative ASCII digits.
  • Fixed-length units (hour, minute, second, …) are zone-independent; a day is a local day in options.timeZone, so New York’s 23-hour 2024-03-10 is 1 day long there.
  • Accepts singular or plural units ("day" and "days" behave identically).
  • Returns 0 for a zero-length interval (start === end).
  • Returns null on invalid input (start/end that is not a safe integer or numeric string of one, or lies outside the Temporal instant range, start > end, an unsupported unit, an invalid epochUnit or an unknown timeZone).
  • Limit at an offset with seconds. The instant is placed in the offset’s whole-minute zone, moved by its seconds, and the moved instant must be inside Temporal’s range. So within the offset’s seconds (under a minute) of the last instant Temporal supports (+275760-09-13T00:00:00Z) for an offset east of UTC, or of the first (-271821-04-20T00:00:00Z) for one west, this returns null. An offset to the minute has no such limit.
ParameterTypeDescription
startstring | numberUnix epoch in epochUnit — interval start
endstring | numberUnix epoch in epochUnit — interval end
unitstringunit string — any DateTimeUnit, singular or plural

options

optional: how the epochs are read and the zone calendar units are measured in

OptionTypeDefaultDescription
epochUnit?"seconds" | "milliseconds" | "second" | "millisecond" (UnixUnit)"milliseconds"The unit the epoch values are counted in: "seconds" or "milliseconds", singular or plural. Any other value returns null.
timeZone?string"UTC"The time zone calendar units are measured in: an IANA name, a UTC offset (a time zone identifier such as +05:30, +0530 or -08, or a stored offset ±HH:MM[:SS], what getTimeZoneOffset returns), or "local" for the system time zone. An unknown zone returns null.

exact length of the interval expressed in unit, or null on invalid input

import { intervalLengthUnix } from "@northguild/gmt/unix/interval";
intervalLengthUnix(0, 86400000, "hour") // 24
output 

unix/interval/intervalLengthUnix.ts