一、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的数据,因此具有一定的通用性,并且可以根据需要转换的时间格式来进行相应的拼接。