28 lines
986 B
TypeScript
28 lines
986 B
TypeScript
import dayjs from 'dayjs';
|
||
|
||
/** 相对时间展示:刚刚 / N 分钟前 / N 小时前 / N 天前,超过 7 天回退完整日期 */
|
||
export function formatRelativeTime(value: string | number) {
|
||
const time = dayjs(value);
|
||
if (!time.isValid()) return '';
|
||
|
||
const now = dayjs();
|
||
const diffMinutes = now.diff(time, 'minute');
|
||
if (diffMinutes < 1) return '刚刚';
|
||
if (diffMinutes < 60) return `${diffMinutes} 分钟前`;
|
||
|
||
const diffHours = now.diff(time, 'hour');
|
||
if (diffHours < 24) return `${diffHours} 小时前`;
|
||
|
||
const diffDays = now.diff(time, 'day');
|
||
if (diffDays < 7) return `${diffDays} 天前`;
|
||
|
||
return time.format('YYYY-MM-DD HH:mm');
|
||
}
|
||
|
||
/** 绝对时间展示:YYYY-MM-DD HH:mm;空值或非法值回空串 */
|
||
export function formatDateTime(value: string | number | null | undefined) {
|
||
if (value === null || value === undefined || value === '') return '';
|
||
const time = dayjs(value);
|
||
return time.isValid() ? time.format('YYYY-MM-DD HH:mm') : '';
|
||
}
|