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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| constructor() { this.formats = { 'en-US': 'MM/DD/YYYY', 'zh-CN': 'YYYY 年 MM 月 DD 日', 'ja-JP': 'YYYY 年 MM 月 DD 日', 'ko-KR': 'YYYY.MM.DD', 'fr-FR': 'DD/MM/YYYY', 'de-DE': 'DD.MM.YYYY' }; }
formatDate(date, locale = 'zh-CN', formatType = 'long') { const d = dayjs(date);
switch (formatType) { case 'short': return d.format('YY/MM/DD'); case 'medium': return d.format('YYYY/MM/DD'); case 'long': if (locale in this.formats) { return d.format(this.formats[locale].replace(/[年月日]/g, '-')); } return d.format('YYYY-MM-DD'); case 'relative': default: return d.format('YYYY-MM-DD'); } }
getLocalizedTime(date, locale = 'zh-CN') { const d = dayjs(date);
switch (locale) { case 'zh-CN': return d.format('YYYY 年 MM 月 DD 日 HH 时 mm 分 ss 秒'); case 'en-US': return d.format('MMMM D, YYYY h:mm A'); case 'ja-JP': return d.format('YYYY 年 MM 月 DD 日 HH 時 mm 分 ss 秒'); default: return d.format('YYYY-MM-DD HH:mm:ss'); } }
getWeekInfo(date, locale = 'zh-CN') { const d = dayjs(date); const weekStart = d.startOf('week'); const weekEnd = d.endOf('week');
const weekDays = []; for (let i = 0; i < 7; i++) { const day = weekStart.add(i, 'day'); weekDays.push({ date: 2023-12-10 10:00:00 dayOfWeek: this.getDayOfWeek(day.day(), locale), isToday: day.isSame(dayjs(), 'day') }); }
return { weekStart: weekStart.format('YYYY-MM-DD'), weekEnd: weekEnd.format('YYYY-MM-DD'), days: weekDays }; }
getDayOfWeek(dayIndex, locale = 'zh-CN') { const days = { 'zh-CN': ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], 'en-US': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], 'ja-JP': ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'] };
return days[locale]?.[dayIndex] || days['en-US'][dayIndex]; } }
const date = dayjs('2024-04-15T14:30:00');
console.log(formatter.formatDate(date, 'zh-CN', 'long')); console.log(formatter.getLocalizedTime(date, 'zh-CN'));
|