将以秒为单位的数值转成HH:mm:ss格式

2021-03-22  本文已影响0人  雷布斯基

表格中经常会有将以为单位的数值,转成 HH:mm:ss 格式的需求。
其实借助 moment 可以很方便的实现这个需求:

import moment from 'moment';
/**
 * 将秒转成hh:mm:ss的格式
 * @param secondsNum
 */
export const getTimeBySeconds = (secondsNum: number) => {
  const time = moment.duration(secondsNum, 'seconds');
  const hours = time.hours();
  const minutes = time.minutes();
  const seconds = time.seconds();
  return moment({ h: hours, m: minutes, s: seconds }).format('HH:mm:ss');
};

具体的api可以直接去 moment 官网查看。
但上面的写法有个问题,对于超过24h的秒数,会将整天的部分都给舍弃掉。
例如 943587 被转成了 22:06:27,而不是期望中的 262:06:27
于是又进行了一些修改,兼容了超过24h的场景:

import moment from 'moment';

/**
 * 将秒转成hh:mm:ss的格式
 * 兼容超过24h的情况
 * @param secondsNum
 */
export const getTimeBySeconds = (secondsNum: number) => {
  const time = moment.duration(secondsNum, 'seconds');
  const hours = Math.floor(time.asHours());
  const minutes = time.minutes();
  const seconds = time.seconds();
  return `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${
    seconds < 10 ? `0${seconds}` : seconds
  }`;
};
上一篇下一篇

猜你喜欢

热点阅读