1、后端返回的是两个日期 YYYY-MM-DD HH:mm:ss格式
2、通过两个日期获取到两个日期之间的毫秒差
3、通过毫秒差计算得到想要的格式
4、通过定时器实现倒计时
// 格式化倒计时
export const formatTime = (diffDate: number) => {
let totalDays = '';
let totalHours = '';
let totalMinutes = '';
let totalSecons = '';
totalDays = Math.floor(diffDate / (1000 * 3600 * 24)); // 向下取整
totalHours = Math.floor((diffDate - totalDays * 24 * 3600 * 1000) / (1000 * 3600));
totalHours = totalHours < 10 ? `0${totalHours}` : totalHours;
totalMinutes = Math.floor(
(diffDate - totalDays * 24 * 3600 * 1000 - totalHours * 3600 * 1000) / (1000 * 60),
);
totalMinutes = totalMinutes < 10 ? `0${totalMinutes}` : totalMinutes;
totalSecons = Math.floor(
(diffDate -
totalDays * 24 * 3600 * 1000 -
totalHours * 3600 * 1000 -
totalMinutes * 60 * 1000) /
1000,
);
totalSecons = totalSecons < 10 ? `0${totalSecons}` : totalSecons;
return `${totalDays}天${totalHours}:${totalMinutes}:${totalSecons}`;
};
// 两个日期中间的日期范围
export const countdown = (time1: string, time2: string) => {
let diffDateNum = '';
const myDate_1 = Date.parse(time1);
const myDate_2 = Date.parse(time2);
// 将两个日期都转换为毫秒格式,然后做差
diffDateNum = Math.abs(myDate_1 - myDate_2); // 取相差毫秒数的绝对值
return diffDateNum;
};
const countdownValue = ref('');
let today = day(new Date()).format('YYYY-MM-DD HH:mm:ss');
let time = countdown(today, '2024-03-25 15:07:25');
const timer = setInterval(() => {
time = time - 1000;
countdownValue.value = formatTime(time);
if (time <= 0) clearInterval(timer);
}, 1000);