/**
* 時間格式換算
* @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:一個是一個小時內的倒計時
不定時更新