UNPKG

@burglekitt/gmt

Version:

Temporal-based date and time utilities with timezone support and polyfill integration

32 lines (31 loc) 1.24 kB
import { Temporal } from "@js-temporal/polyfill"; import { normalizeDateTime } from "../../internal/index.js"; import { isValidDateTime } from "../validate/index.js"; /** * Return a localized string for a PlainDateTime ISO input using Intl options. * * - Uses Temporal.PlainDateTime.toLocaleString for formatting. * - Accepts optional BCP 47 locale and Intl.DateTimeFormatOptions. * - Returns "" for invalid input. * * @param value ISO PlainDateTime string * @param locale optional BCP 47 locale identifier * @param options optional Intl.DateTimeFormatOptions * @returns localized date-time string or "" on invalid input * * @example formatDateTime("2024-03-15T14:30:00", "en-US", { dateStyle: "medium", timeStyle: "short" }) // "Mar 15, 2024 at 2:30 PM" * @example formatDateTime("2024-03-15T14:30:00", "de-DE", { dateStyle: "medium", timeStyle: "short" }) // "15.03.2024, 14:30" * @example formatDateTime("invalid") // "" */ export function formatDateTime(value, locale, options) { if (!isValidDateTime(value)) { return ""; } try { const out = Temporal.PlainDateTime.from(value).toLocaleString(locale, options); return normalizeDateTime(out); } catch { return ""; } }