表格中经常会有将以秒
为单位的数值,转成 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
}`;
};
网友评论