JS - Duration时间戳间隔转换成X天X时X分X秒X毫秒

一、Js中将时间戳间隔转换成不同种时间差格式

/**
 * 将duration时间间隔转换成XdXhXmXsXms
 */

 export function formatSecond(time, format = 'format') {
  if (!time) {
    return '0s';
  }
  if (time == 0) {
    return format == 'h' ? '0h' : '0s';
  }
  if (typeof time == 'string') {
    //判断传入的是不是string类型,如果是的话,先转换成时间number类型
    time = Number(time);
  }

  if (format != 'ms') {
    //入参为s,统一转ms
    time = time * 1000;
  }

  let oneDay = 1000 * 60 * 60 * 24;
  let oneHour = 1000 * 60 * 60;
  let oneMinute = 1000 * 60;
  let oneSecond = 1000;
  let days = 0;
  let hours = 0;
  let minutes = 0;
  let seconds = 0;
  let mseconds = 0;

  if (time) {
    if (time >= oneDay) {
      days = Math.floor(time / oneDay);
      hours = Math.floor((time % oneDay) / oneHour);
      minutes = Math.floor((time % oneHour) / oneMinute);
    } else if (oneHour <= time && time < oneDay) {
      hours = Math.floor(time / oneHour);
      minutes = Math.floor((time % oneHour) / oneMinute);
      seconds = Math.floor(((time % oneHour) % oneMinute) / oneSecond);
      mseconds = time - (hours * oneHour + minutes * oneMinute + seconds * oneSecond);
    } else if (time >= oneMinute && time < oneHour) {
      minutes = Math.floor(time / oneMinute);
      seconds = Math.floor((time - minutes * oneMinute) / oneSecond);
      mseconds = Math.floor(time - minutes * oneMinute - seconds * oneSecond);
    } else if (time >= oneSecond && time < oneMinute) {
      seconds = Math.floor(time / oneSecond);
      mseconds = Math.floor(time % oneSecond);
    } else {
      mseconds = time;
    }
    //根据传入的需要转换的格式来做不同的处理进行相应的拼接即可
    if (format == 'h') {
      time = ( days * 24 + hours + minutes / 60).toFixed(2) + 'h';
    } else if (format == 'ms') {
      time =
        (hours != 0 ? hours + 'h' : '') +
        (minutes != 0 ? minutes + 'm' : '') +
        (seconds != 0 ? seconds + 's' : '') +
        (mseconds != 0 ? mseconds + 'ms' : '');
    } else {
      time =
        (days != 0 ? days + 'd' : '') +
        (hours != 0 ? hours + 'h' : '') +
        (minutes != 0 ? minutes + 'm' : '') +
        (seconds != 0 ? seconds + 's' : '');
    }
  }
  return time;
}

二、总结
这个函数可以转换时间戳为s或者ms的数据,因此具有一定的通用性,并且可以根据需要转换的时间格式来进行相应的拼接。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值