UNPKG

date-time-format-icu

Version:

This package provides a simple and flexible way to format JavaScript dates

94 lines (90 loc) 3.58 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { dateFormatter: () => dateFormatter }); module.exports = __toCommonJS(index_exports); // src/types.ts var DateFormat = /* @__PURE__ */ ((DateFormat2) => { DateFormat2["short"] = "M/d/yy, h:mm a"; DateFormat2["medium"] = "MMM d, y, h:mm:ss a"; DateFormat2["long"] = "MMMM d, y, h:mm:ss a z"; DateFormat2["full"] = "EEEE, MMMM d, y, h:mm:ss a zzzz"; DateFormat2["shortDate"] = "M/d/yy"; DateFormat2["mediumDate"] = "MMM d, y"; DateFormat2["longDate"] = "MMMM d, y"; DateFormat2["fullDate"] = "EEEE, MMMM d, y"; DateFormat2["shortTime"] = "h:mm a"; DateFormat2["mediumTime"] = "h:mm:ss a"; DateFormat2["longTime"] = "h:mm:ss a z"; DateFormat2["fullTime"] = "h:mm:ss a zzzz"; return DateFormat2; })(DateFormat || {}); // src/index.ts function dateFormatter(input, format = "medium", locale = "en-US") { let date; if (input instanceof Date) { date = input; } else if (typeof input === "string" || typeof input === "number") { const parsed = new Date(input); if (isNaN(parsed.getTime())) { return "Invalid Date"; } date = parsed; } else { return "Invalid Input"; } const formatString = DateFormat[format] || format; try { return new Intl.DateTimeFormat(locale, buildIntlOptions(formatString)).format(date); } catch (err) { return date.toISOString(); } } function buildIntlOptions(format) { const options = {}; if (format.indexOf("y") !== -1) options.year = "numeric"; if (format.indexOf("yy") !== -1 && format.indexOf("yyy") === -1) options.year = "2-digit"; if (format.indexOf("MMMM") !== -1) options.month = "long"; else if (format.indexOf("MMM") !== -1) options.month = "short"; else if (format.indexOf("MM") !== -1) options.month = "2-digit"; else if (format.indexOf("M") !== -1) options.month = "numeric"; if (format.indexOf("dd") !== -1) options.day = "2-digit"; else if (format.indexOf("d") !== -1) options.day = "numeric"; if (format.indexOf("EEEE") !== -1) options.weekday = "long"; else if (format.indexOf("EEE") !== -1) options.weekday = "short"; if (format.indexOf("hh") !== -1 || format.indexOf("h") !== -1) { options.hour = "2-digit"; options.hour12 = true; } else if (format.indexOf("HH") !== -1 || format.indexOf("H") !== -1) { options.hour = "2-digit"; options.hour12 = false; } if (format.indexOf("mm") !== -1) options.minute = "2-digit"; if (format.indexOf("ss") !== -1) options.second = "2-digit"; if (format.indexOf("zzzz") !== -1) options.timeZoneName = "long"; else if (format.indexOf("z") !== -1) options.timeZoneName = "short"; return options; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { dateFormatter });