自己寫的對時間操作的工具

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章