@burglekitt/gmt
Version:
Temporal-based date and time utilities with timezone support and polyfill integration
32 lines (31 loc) • 1.24 kB
JavaScript
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 "";
}
}