mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-24 09:46:36 +00:00
Use memoize in formatDateNumeric (#16686)
This commit is contained in:
parent
25986f239e
commit
9797950f32
@ -31,52 +31,63 @@ const formatDateMem = memoizeOne(
|
||||
);
|
||||
|
||||
// 10/08/2021
|
||||
export const formatDateNumeric = (dateObj: Date, locale: FrontendLocaleData) =>
|
||||
formatDateNumericMem(locale, dateObj);
|
||||
export const formatDateNumeric = (
|
||||
dateObj: Date,
|
||||
locale: FrontendLocaleData
|
||||
) => {
|
||||
const formatter = formatDateNumericMem(locale);
|
||||
|
||||
const formatDateNumericMem = memoizeOne(
|
||||
(locale: FrontendLocaleData, dateObj: Date) => {
|
||||
const localeString =
|
||||
locale.date_format === DateFormat.system ? undefined : locale.language;
|
||||
if (
|
||||
locale.date_format === DateFormat.language ||
|
||||
locale.date_format === DateFormat.system
|
||||
) {
|
||||
return formatter.format(dateObj);
|
||||
}
|
||||
|
||||
if (
|
||||
locale.date_format === DateFormat.language ||
|
||||
locale.date_format === DateFormat.system
|
||||
) {
|
||||
return new Intl.DateTimeFormat(localeString, {
|
||||
year: "numeric",
|
||||
month: "numeric",
|
||||
day: "numeric",
|
||||
}).format(dateObj);
|
||||
}
|
||||
const parts = formatter.formatToParts(dateObj);
|
||||
|
||||
const parts = new Intl.DateTimeFormat(localeString, {
|
||||
const literal = parts.find((value) => value.type === "literal")?.value;
|
||||
const day = parts.find((value) => value.type === "day")?.value;
|
||||
const month = parts.find((value) => value.type === "month")?.value;
|
||||
const year = parts.find((value) => value.type === "year")?.value;
|
||||
|
||||
const lastPart = parts.at(parts.length - 1);
|
||||
let lastLiteral = lastPart?.type === "literal" ? lastPart?.value : "";
|
||||
|
||||
if (locale.language === "bg" && locale.date_format === DateFormat.YMD) {
|
||||
lastLiteral = "";
|
||||
}
|
||||
|
||||
const formats = {
|
||||
[DateFormat.DMY]: `${day}${literal}${month}${literal}${year}${lastLiteral}`,
|
||||
[DateFormat.MDY]: `${month}${literal}${day}${literal}${year}${lastLiteral}`,
|
||||
[DateFormat.YMD]: `${year}${literal}${month}${literal}${day}${lastLiteral}`,
|
||||
};
|
||||
|
||||
return formats[locale.date_format];
|
||||
};
|
||||
|
||||
const formatDateNumericMem = memoizeOne((locale: FrontendLocaleData) => {
|
||||
const localeString =
|
||||
locale.date_format === DateFormat.system ? undefined : locale.language;
|
||||
|
||||
if (
|
||||
locale.date_format === DateFormat.language ||
|
||||
locale.date_format === DateFormat.system
|
||||
) {
|
||||
return new Intl.DateTimeFormat(localeString, {
|
||||
year: "numeric",
|
||||
month: "numeric",
|
||||
day: "numeric",
|
||||
}).formatToParts(dateObj);
|
||||
|
||||
const literal = parts.find((value) => value.type === "literal")?.value;
|
||||
const day = parts.find((value) => value.type === "day")?.value;
|
||||
const month = parts.find((value) => value.type === "month")?.value;
|
||||
const year = parts.find((value) => value.type === "year")?.value;
|
||||
|
||||
const lastPart = parts.at(parts.length - 1);
|
||||
let lastLiteral = lastPart?.type === "literal" ? lastPart?.value : "";
|
||||
|
||||
if (localeString === "bg" && locale.date_format === DateFormat.YMD) {
|
||||
lastLiteral = "";
|
||||
}
|
||||
|
||||
const formats = {
|
||||
[DateFormat.DMY]: `${day}${literal}${month}${literal}${year}${lastLiteral}`,
|
||||
[DateFormat.MDY]: `${month}${literal}${day}${literal}${year}${lastLiteral}`,
|
||||
[DateFormat.YMD]: `${year}${literal}${month}${literal}${day}${lastLiteral}`,
|
||||
};
|
||||
|
||||
return formats[locale.date_format];
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
return new Intl.DateTimeFormat(localeString, {
|
||||
year: "numeric",
|
||||
month: "numeric",
|
||||
day: "numeric",
|
||||
});
|
||||
});
|
||||
|
||||
// Aug 10
|
||||
export const formatDateShort = (dateObj: Date, locale: FrontendLocaleData) =>
|
||||
|
Loading…
x
Reference in New Issue
Block a user