12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import dayjs from 'dayjs';
- import relativeTime from 'dayjs/plugin/relativeTime';
- import isToday from 'dayjs/plugin/isToday';
- import isYesterday from 'dayjs/plugin/isYesterday';
- import weekday from 'dayjs/plugin/weekday';
- // 加载插件
- dayjs.extend(relativeTime);
- dayjs.extend(isToday);
- dayjs.extend(isYesterday);
- dayjs.extend(weekday);
- function handleTime(timestamp) {
- const msgDate = dayjs(timestamp);
- const now = dayjs();
- // 获取当前时区的零点时间戳
- const todayStart = now.startOf('day');
- const yesterdayStart = todayStart.subtract(1, 'day');
- const lastWeekStart = todayStart.subtract(7, 'day');
- if (msgDate.isToday()) {
- // 今天:上午/下午 + 小时分钟
- const hour = msgDate.hour();
- let period = '凌晨';
- if (hour >= 6 && hour < 12) {
- period = '上午';
- } else if (hour >= 12 && hour < 18) {
- period = '下午';
- } else if (hour >= 18 || hour < 6) {
- period = '晚上';
- }
- return `${period}${msgDate.format('HH:mm')}`;
- }
- if (msgDate.isYesterday()) {
- // 昨天:昨天 + 小时分钟
- return `昨天 ${msgDate.format('HH:mm')}`;
- }
- if (msgDate.isAfter(lastWeekStart)) {
- // 本周内(非今天、非昨天):星期几 + 小时分钟
- const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
- const day = weekDays[msgDate.day()];
- return `${day} ${msgDate.format('HH:mm')}`;
- }
- if (msgDate.year() === now.year()) {
- // 同一年,不同周:月/日 + 小时分钟
- return msgDate.format('MM/DD HH:mm');
- }
- // 跨年:年/月/日 + 小时分钟
- return msgDate.format('YYYY/MM/DD HH:mm');
- }
- export { handleTime }
|