实现日期倒计时(X天xx:xx:xx)

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);

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值