Skip to content

getZonedOffsetAs

getZonedOffsetAs(value: string, unit: ZonedOffsetUnit): number
import { getZonedOffsetAs } from "@northguild/gmt/zoned/parse";

Read a zoned value’s UTC offset as a number, in the given unit.

  • Subsumes what would otherwise be getZonedOffsetMinutes / getZonedOffsetNanoseconds — one differently-scaled reading of the same underlying quantity through a single parameterized call, following J8’s getDurationUnit(value, unit) precedent (Decision 5).
  • “nanoseconds” reads Temporal’s offsetNanoseconds directly.
  • “minutes” divides by 60e9 — every IANA offset is a whole number of minutes, so this never truncates a fraction.
  • Negative offsets (west of UTC) return a negative number.
  • Returns null on invalid value or unit.
Parameter Type Description
value string zoned ISO 8601 datetime string
unit ZonedOffsetUnit “minutes” | “nanoseconds”

the offset in the requested unit, or null on invalid input

getZonedOffsetAs("2024-07-15T12:00:00-04:00[America/New_York]", "minutes") // -240
getZonedOffsetAs("2024-05-15T12:00:00+05:45[Asia/Kathmandu]", "minutes") // 345
getZonedOffsetAs("2024-02-29T12:00:00+00:00[UTC]", "nanoseconds") // 0
getZonedOffsetAs("2024-07-15T12:00:00-04:00[America/New_York]", "nanoseconds") // -14400000000000
getZonedOffsetAs("invalid", "minutes") // null
getZonedOffsetAs("2024-02-29T12:00:00+00:00[UTC]", "fortnights" as never) // null

zoned/parse/getZonedOffsetAs.ts