@burglekitt/gmt
Version:
Temporal-based date and time utilities with timezone support and polyfill integration
30 lines (29 loc) • 1.05 kB
JavaScript
import { Temporal } from "@js-temporal/polyfill";
import { isValidZonedDateTime } from "../validate/index.js";
/**
* Extract the UTC offset from an ISO 8601 zoned datetime string.
*
* - Returns the offset in Temporal's ±HH:MM string form.
* - This is a value-taking accessor (per J0b's `get/` rule), so it lives in
* `parse/` alongside `parseTimeZoneFromZoned`, not `get/`.
* - Returns "" for invalid input.
*
* @param value zoned ISO 8601 datetime string
* @returns offset string (e.g. "-04:00"), or "" on invalid input
*
* @example getZonedOffset("2024-02-29T12:34:56.789+00:00[UTC]") // "+00:00"
* @example getZonedOffset("2024-07-15T12:00:00-04:00[America/New_York]") // "-04:00"
* @example getZonedOffset("2024-05-15T12:00:00+05:45[Asia/Kathmandu]") // "+05:45"
* @example getZonedOffset("invalid") // ""
*/
export function getZonedOffset(value) {
if (!isValidZonedDateTime(value)) {
return "";
}
try {
return Temporal.ZonedDateTime.from(value).offset;
}
catch {
return "";
}
}