mirror of
https://github.com/ente-io/ente.git
synced 2025-05-30 06:19:44 +00:00
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import i18n, { t } from "i18next";
|
|
|
|
const dateTimeFullFormatter1 = new Intl.DateTimeFormat(i18n.language, {
|
|
weekday: "short",
|
|
month: "short",
|
|
day: "numeric",
|
|
});
|
|
|
|
const dateTimeFullFormatter2 = new Intl.DateTimeFormat(i18n.language, {
|
|
year: "numeric",
|
|
});
|
|
const dateTimeShortFormatter = new Intl.DateTimeFormat(i18n.language, {
|
|
month: "short",
|
|
day: "numeric",
|
|
year: "numeric",
|
|
hour: "2-digit",
|
|
minute: "2-digit",
|
|
});
|
|
|
|
const timeFormatter = new Intl.DateTimeFormat(i18n.language, {
|
|
timeStyle: "short",
|
|
});
|
|
|
|
function formatDateFull(date: number | Date) {
|
|
return [dateTimeFullFormatter1, dateTimeFullFormatter2]
|
|
.map((f) => f.format(date))
|
|
.join(" ");
|
|
}
|
|
|
|
export function formatDate(date: number | Date) {
|
|
const withinYear =
|
|
new Date().getFullYear() === new Date(date).getFullYear();
|
|
const dateTimeFormat2 = !withinYear ? dateTimeFullFormatter2 : null;
|
|
return [dateTimeFullFormatter1, dateTimeFormat2]
|
|
.filter((f): f is Intl.DateTimeFormat => !!f)
|
|
.map((f) => f.format(date))
|
|
.join(" ");
|
|
}
|
|
|
|
export function formatDateTimeShort(date: number | Date) {
|
|
return dateTimeShortFormatter.format(date);
|
|
}
|
|
|
|
export function formatTime(date: number | Date) {
|
|
return timeFormatter.format(date).toUpperCase();
|
|
}
|
|
|
|
export function formatDateTimeFull(dateTime: number | Date): string {
|
|
return [formatDateFull(dateTime), t("at"), formatTime(dateTime)].join(" ");
|
|
}
|
|
|
|
export function formatDateTime(dateTime: number | Date): string {
|
|
return [formatDate(dateTime), t("at"), formatTime(dateTime)].join(" ");
|
|
}
|