Skip to content

subtractDuration

subtractDuration(a: string, b: string): string
import { subtractDuration } from "@northguild/gmt/duration/calculate";

Combine two ISO 8601 duration strings by subtraction.

  • Uses Temporal.Duration.from and .subtract to combine, then .toString() to re-emit.
  • Temporal.Duration.prototype.subtract has no relativeTo option, so combining any pair where either operand has a nonzero years/months/weeks component throws and results in “” — calendar-unit duration arithmetic needs a reference point that this function does not accept.
  • The result may be negative (e.g. subtracting a larger duration from a smaller one).
  • Returns “” if either operand is not a valid ISO 8601 duration string.
Parameter Type Description
a string ISO 8601 duration string
b string ISO 8601 duration string

ISO 8601 duration string representing a - b, or “” on invalid input

subtractDuration("P1D", "PT2H") // "PT22H"
subtractDuration("PT1H", "PT2H") // "-PT1H"
subtractDuration("P1Y", "P1M") // "" (calendar units need relativeTo, unsupported)
subtractDuration("P1D", "not a duration") // ""

duration/calculate/subtractDuration.ts