TypeScript 代码
如果是用的 moment , 把 dayjs () 替换成 moment() 就可以了.
两个库是兼容的
// 引入
import dayjs, { Dayjs } from "dayjs";
// 传入 过去/未来 的一个时间
// 字符串格式: 只要能被 moment 处理的时间格式都可以
let diffTime = (time: Dayjs | string) => {
let myTime: Dayjs = typeof time == "string" ? dayjs(time) : time;
let nowTime = dayjs();
let diff = dayjs.duration(myTime.diff(nowTime));
let isBefore = myTime.isBefore(nowTime);
let year = diff.years();
let month = diff.months();
let day = diff.days();
let hour = diff.hours();
let minute = diff.minutes();
let second = diff.seconds();
let ret: string[] = [];
// 将负数变为正数
function abs(num: number) {
if (num < 0) {
return Math.abs(num);
}
return num;
}
// 到期后,在时间前面添加 "-" 号
ret.push(isBefore ? "-" : "");
if (year != 0) {
ret.push(`${abs(year)}年`);
}
if (month != 0) {
ret.push(`${abs(month)}月`);
}
if (day != 0) {
ret.push(`${abs(day)}天`);
}
if (hour != 0) {
ret.push(`${abs(hour)}时`);
}
if (minute != 0) {
ret.push(`${abs(minute)}分`);
}
if (second != 0) {
ret.push(`${abs(second)}秒`);
}
// 结果:
// 273年 11月 23天 23时 59分 48秒
// 1月 29天 23时 58分 28秒
// 21时 26分 19秒
// - 1分 2秒
return ret.join(" ");
};
dayjs 初始化
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import calenderPlugin from 'dayjs/plugin/calendar';
import relativeTimePlugin from 'dayjs/plugin/relativeTime';
import timezone from 'dayjs/plugin/timezone';
import updateLocale from 'dayjs/plugin/updateLocale';
import utc from 'dayjs/plugin/utc';
import duration from 'dayjs/plugin/duration';
dayjs.extend(duration)
dayjs.extend(updateLocale);
dayjs.extend(relativeTimePlugin);
dayjs.extend(calenderPlugin);
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.updateLocale('zh-cn', {
// A : 上午/下午/晚上 , dddd: 星期
calendar: {
lastDay: 'YYYY.MM.DD [昨天] A h:mm dddd',
sameDay: 'YYYY.MM.DD [今天] A h:mm dddd',
nextDay: 'YYYY.MM.DD [明天] A h:mm dddd',
lastWeek: 'YYYY.MM.DD A h:mm [上]dddd',
nextWeek: 'YYYY.MM.DD A h:mm [下]dddd',
sameElse: 'YYYY.MM.DD A h:mm dddd',
},
});
// 设置语言
dayjs.locale('zh-cn');
//设置时区 ( 如果不设置, 那 nodejs (比如: webpack插件/vite插件) 在 vercel 等构建平台, 就会用的国外服务器时间)
dayjs.tz.setDefault('Asia/Shanghai');
console.log('dayjs: 初始化完成');