trs-ui-app
Version:
TRS 可视化低代码平台 前端移动 UI 组件库 👍
39 lines (36 loc) • 1.69 kB
JavaScript
import format from '../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/format/index.js';
import intervalToDuration from '../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/intervalToDuration/index.js';
const duration = (n) => {
const past = typeof n === 'string' ? new Date(n.replace(/-/g, '/')) : new Date(n);
const time = past.getTime();
const today = new Date();
const now = today.getTime();
if (!time)
return n;
const delta = (now - time) / 1000;
if (delta < 0)
return format(past, 'yyyy-MM-dd HH:mm');
if (delta < 60)
return '刚刚';
if (delta < 60 * 60)
return `${Math.floor(delta / 60)}分钟前`;
if (delta < 60 * 60 * 24)
return `${Math.floor(delta / (60 * 60))}小时前`;
const year = today.getFullYear();
const pastYear = past.getFullYear();
return year === pastYear ? format(past, 'MM-dd HH:mm') : format(past, 'yyyy-MM-dd HH:mm');
};
const parseDate = (time, dateFormat) => {
const past = typeof time === 'string' ? new Date(time.replace(/-/g, '/')) : new Date(time);
return dateFormat === 'duration'
? duration(time)
: format(past, dateFormat);
};
const formatTime = (seconds) => {
const duration = intervalToDuration({ start: 0, end: Number(seconds) * 1000 });
const hour = duration.hours.toString().padStart(2, '0');
const minute = duration.minutes.toString().padStart(2, '0');
const second = duration.seconds.toString().padStart(2, '0');
return Number(seconds) < 3600 ? `${minute}:${second}` : `${hour}:${minute}:${second}`;
};
export { duration, formatTime, parseDate };