File size: 1,522 Bytes
96dd062 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import { siteConfig } from "../config";
export function formatDateToYYYYMMDD(date: Date): string {
return date.toISOString().substring(0, 10);
}
// 国际化日期格式化函数
export function formatDateI18n(
dateInput: Date | string,
includeTime?: boolean,
): string {
const date = typeof dateInput === "string" ? new Date(dateInput) : dateInput;
const lang = siteConfig.lang || "en";
// 根据语言设置不同的日期格式
const options: Intl.DateTimeFormatOptions = {
year: "numeric",
month: "long",
day: "numeric",
};
if (includeTime) {
options.hour = "2-digit";
options.minute = "2-digit";
options.second = "2-digit";
}
// 如果配置了时区,则将其用于格式化(IANA 时区字符串)
if (siteConfig.timezone) {
(options as Intl.DateTimeFormatOptions).timeZone = siteConfig.timezone;
}
// 语言代码映射
const localeMap: Record<string, string> = {
zh_CN: "zh-CN",
zh_TW: "zh-TW",
en: "en-US",
ja: "ja-JP",
ko: "ko-KR",
es: "es-ES",
th: "th-TH",
vi: "vi-VN",
tr: "tr-TR",
id: "id-ID",
fr: "fr-FR",
de: "de-DE",
ru: "ru-RU",
ar: "ar-SA",
};
const locale = localeMap[lang] || "en-US";
return includeTime
? date.toLocaleString(locale, options)
: date.toLocaleDateString(locale, options);
}
// 国际化日期时间格式化函数(带时分秒)
export function formatDateI18nWithTime(dateInput: Date | string): string {
return formatDateI18n(dateInput, true);
}
|