Skip to content

getDurationSign

getDurationSign(value: string): number
import { getDurationSign } from "@northguild/gmt/duration/calculate";

Report whether an ISO 8601 duration is negative, zero-length, or positive.

  • Uses Temporal.Duration.from and reads .sign: -1, 0, or 1.
  • Zero is its own result, not folded into the positive case — “PT0S” is 0, and so is “-PT0S”, since a negated zero is still zero.
  • Needs no relativeTo: a duration’s sign is carried on its components, not derived from how long they measure, so calendar-unit durations answer fine.
  • Returns null when value is not a valid ISO 8601 duration string — distinct from the 0 a valid zero-length duration returns.
Parameter Type Description
value string ISO 8601 duration string

-1 for a negative duration, 0 for zero-length, 1 for positive, or null on invalid input

getDurationSign("P1DT2H") // 1
getDurationSign("-P1DT2H") // -1
getDurationSign("PT0S") // 0
getDurationSign("-PT0S") // 0
getDurationSign("-P1Y") // -1 (no relativeTo needed)
getDurationSign("not a duration") // null

duration/calculate/getDurationSign.ts