Skip to content

diffUnixAsDuration

diffUnixAsDuration(value1: number, value2: number, unit: DateTimeDurationUnit, options?: any): string
import { diffUnixAsDuration } from "@northguild/gmt/unix/calculate";

Return the difference between two Unix timestamps as an ISO 8601 duration string,

  • bridging to the duration namespace (see parseDuration, normalizeDuration).
  • Uses Temporal.Instant.until() with largestUnit set to unit, then .toString().
  • Unlike diffUnix, unit is a single unit (not an array) — an ISO duration string already expresses a full multi-unit breakdown via largestUnit alone, so there’s no array-of-units overload here.
  • Returns "" for invalid input (negative diffs are valid and render with a leading -). smallestUnit, roundingIncrement, and roundingMode control optional rounding of the underlying difference before it’s rendered, per Temporal’s DifferenceOptions — same as diffUnix. toStringSmallestUnit, fractionalSecondDigits, and toStringRoundingMode control the precision of the rendered string itself, per Temporal’s ToStringPrecisionOptions (mirroring parseDuration’s options) — kept separate from the .until() rounding options above because both option sets have colliding smallestUnit/roundingMode keys with different Temporal types.
Parameter Type Description
value1 number first Unix timestamp
value2 number second Unix timestamp
unit DateTimeDurationUnit DateTimeDurationUnit to use as the duration’s largestUnit
options any optional: epochUnit (“seconds” | “milliseconds”), timeZone (IANA), smallestUnit, roundingIncrement, roundingMode (.until() rounding); toStringSmallestUnit, fractionalSecondDigits, toStringRoundingMode (.toString() precision)

ISO 8601 duration string, or “” on invalid input

diffUnixAsDuration(1706659200000, 1706745600000, "days") // "P1D"
diffUnixAsDuration(1706745600000, 1706659200000, "days") // "-P1D"
diffUnixAsDuration(1706659200, 1706745600, "days", { epochUnit: "seconds" }) // "P1D"
diffUnixAsDuration(NaN, 1706745600000, "days") // ""

unix/calculate/diffUnixAsDuration.ts