/**
* 时间格式换算
* @param {number} time_num 毫秒数
* 将微秒数转变成,时,分,秒
* @return {string} "00:00:00"格式
*/
const formatTime = function(time_num){
if (time_num) {
//声明时间换算
const second = 1000;//秒
const minute = 1000*60;//分
const hour = 1000*60*60;//时
if (time_num < second) {//毫秒换算小于一秒
return "00:00:00"
} else if (time_num >= second && time_num < minute) {//毫秒换算秒
let sec_num = addZero(Math.floor(time_num/second));
return joinString("","",sec_num)
}else if (time_num >= minute && time_num < hour) {//毫秒换分钟
let minute_num = addZero(Math.floor(time_num/minute));
let sec_num = addZero(Math.floor((time_num-minute_num*minute)/second));
return joinString("",minute_num,sec_num);
} else if (time_num >= hour && time_num < hour*99) {//毫秒换小时
let hour_num = addZero(Math.floor(time_num/hour));
let minute_num = addZero(Math.floor((time_num-hour_num*hour)/minute));
let sec_num = addZero(Math.floor((time_num-hour_num*hour-minute_num*minute)/second));
return joinString(hour_num,minute_num,sec_num)
} else {
return {
clock:"00:00:00",
time:"e秒",
msg:"时间超过了99小时"
}
}
} else {
return {
clock:"00:00:00",
time:"0秒",
msg:"参数错误"
}
}
};
/**
* 为不满十位的数加0
* @param e {number}
* @return {string} 例如:15 => "15"; 1 => "01"
*/
const addZero = function(e){
if (typeof e === "number") {
if (e > 9) {
return e.toString();
} else {
return "0" + e ;
}
}
};
/**
* @param h {string} 拼接参数小时
* @param m {string} 拼接参数分钟
* @param s {string} 拼接参数秒
* @return {}
*/
const joinString = function(h,m,s){
let hour = h || "00";
let minute = m || "00";
let sec = s || "00";
return {
clock:hour+":"+minute+":"+sec,
time:hour+"时"+minute+"分"+sec+"秒"
}
};
/**
* 开启倒计时
* @param {number} time_num 毫秒数
* @param {function} callback 函数,用于嵌入定时器执行参数为秒数 callback(STRING)
* @return
*/
const countZeroTime = function(time_num,callback){
if (time_num) {
let second_num = Math.floor(time_num/1000);
let second_count = second_num;
if (second_num < 1) {
callback("00:00")
} else if (second_num >= 1 && second_num < 60) {
let interval = setInterval(function () {
second_count--;
callback("00"+ ":" + addZero(second_count));
if (second_count === 0){
clearInterval(interval);
};
},1000);
} else if (second_num >= 60 && second_num < 60*60) {
let minute_num = Math.floor(second_num/60);
let sec_num = second_num - minute_num*60;
let sec_count = sec_num;
let minute_count = minute_num;
let interval = setInterval(function () {
if (sec_count > 0) {
sec_count--;
let m = addZero(minute_count);
let s = addZero(sec_count);
callback(m+":"+s);
} else if (minute_count > 0 && sec_count === 0) {
minute_count--;
sec_count = 59;
let m = addZero(minute_count);
let s = addZero(sec_count);
callback(m+":" +s);
} else {
clearInterval(interval);
}
},1000)
}else{
callback(console.error("时长不能超过1个小时"))
}
} else {
return null;
}
};
module.exports = {
formatTime, countZeroTime
};
目前只有两个方法
1:一个是传毫秒数返回时分秒:“00:00:00”
2:一个是一个小时内的倒计时
不定时更新