介绍

01:27:30(01-27-30) 转成 秒:5250 分:87.5 时:1.4583333333333335
方法很简单,处理01:27:30用字符串分割就行了
转成数字用乘除法算一下就行了

代码

function HMSTimeToNumber(Value , Type = "Second", Cut = ":") {
    var Temp = Value;//复制一份时间,用于获取分隔符总数
    var Cut_Number = 0;//分隔符存在总数
    //统计分隔符数量---开始
    while (Temp.indexOf(Cut) != -1) {//判断分隔符是否存在
        Temp = Temp.replace(Cut, "")
        Cut_Number++;
    }
    //统计分隔符数量---结束
    var Temp0 = Value;//复制一份时间,用于分割
    var Time = new Array([]);//创建时间数组
    var Cut_Time_Temp = 0;//临时变量,获取分隔符位置
    var NumberTime = 0;//记录数字时间
    var Number_Pow = 0;//60的次方数变量
    //分割时间---开始
    for (let i = 0; i <= Cut_Number; i++) {
        Cut_Time_Temp = Temp0.lastIndexOf(Cut);//从最后获取分隔符位置
        var TimeTemp = Temp0.substring(Cut_Time_Temp + 1);//截取分隔符后面的字符串
        Time[i] = TimeTemp;//记录时间
        if(Type == "Second"){//判断转整数类型
            Number_Pow = i;//转为秒
        }else if(Type == "Minute"){
            Number_Pow = i - 1;//转为分钟则次方减1
        }else if(Type == "Hour"){
            Number_Pow = i - 2;//转为小时则次方减2
        }
        NumberTime = NumberTime + (Number(TimeTemp) * Math.pow(60, Number_Pow));//进行计算
        Temp0 = Temp0.substring(0, Cut_Time_Temp);//去掉末尾截取的字符串
    }
    //分割时间---结束
    var Result = new Array([]);//结果数组
    Result["Second"] = Number(Time[0]);//保存秒
    if(Time[1] !== undefined){//判断是否是时间存在
        Result["Minute"] = Number(Time[1]);//保存分
    }else {
        Result["Minute"] = 0;//不是则输出0
    }
    if(Time[2] !== undefined){//判断是否是时间存在
        Result["Hour"] = Number(Time[2]);//保存时
    }else {
        Result["Hour"] = 0;//不是则输出0
    }
    Result["Time"] = NumberTime;//保存转换后的数字
    return Result;//返回结果
}

返回结果是数组

 

调用函数

参数 介绍
Lyric_content 必填,歌词
End 可空,歌词结束标志,默认为End
Cut 可空,要删除的字符,默认为/r/n

返回结果

字段 介绍
Size 歌词长度,整数(int),失败返回0
LineNumber 歌词总行数,整数(int),失败返回0
Line 歌词行内容,字符串(string),失败返回空
StartTime 歌词每行开始时间,字符串(string) ,失败返回空
LineValue 歌词每行文本,字符串(string) ,失败返回空
EndTime 歌词每行结束时间,字符串(string) ,失败返回空

 

示例

function HMSTimeToNumber(Value , Type = "Second", Cut = ":") {
    var Temp = Value;//复制一份时间,用于获取分隔符总数
    var Cut_Number = 0;//分隔符存在总数
    //统计分隔符数量---开始
    while (Temp.indexOf(Cut) != -1) {//判断分隔符是否存在
        Temp = Temp.replace(Cut, "")
        Cut_Number++;
    }
    //统计分隔符数量---结束
    var Temp0 = Value;//复制一份时间,用于分割
    var Time = new Array([]);//创建时间数组
    var Cut_Time_Temp = 0;//临时变量,获取分隔符位置
    var NumberTime = 0;//记录数字时间
    var Number_Pow = 0;//60的次方数变量
    //分割时间---开始
    for (let i = 0; i <= Cut_Number; i++) {
        Cut_Time_Temp = Temp0.lastIndexOf(Cut);//从最后获取分隔符位置
        var TimeTemp = Temp0.substring(Cut_Time_Temp + 1);//截取分隔符后面的字符串
        Time[i] = TimeTemp;//记录时间
        if(Type == "Second"){//判断转整数类型
            Number_Pow = i;//转为秒
        }else if(Type == "Minute"){
            Number_Pow = i - 1;//转为分钟则次方减1
        }else if(Type == "Hour"){
            Number_Pow = i - 2;//转为小时则次方减2
        }
        NumberTime = NumberTime + (Number(TimeTemp) * Math.pow(60, Number_Pow));//进行计算
        Temp0 = Temp0.substring(0, Cut_Time_Temp);//去掉末尾截取的字符串
    }
    //分割时间---结束
    var Result = new Array([]);//结果数组
    Result["Second"] = Number(Time[0]);//保存秒
    if(Time[1] !== undefined){//判断是否是时间存在
        Result["Minute"] = Number(Time[1]);//保存分
    }else {
        Result["Minute"] = 0;//不是则输出0
    }
    if(Time[2] !== undefined){//判断是否是时间存在
        Result["Hour"] = Number(Time[2]);//保存时
    }else {
        Result["Hour"] = 0;//不是则输出0
    }
    Result["Time"] = NumberTime;//保存转换后的数字
    return Result;//返回结果
}
console.log(HMSTimeToNumber("01:27:30"))
console.log(HMSTimeToNumber("01:27:30","Minute"))
console.log(HMSTimeToNumber("01:27:30","Hour"))
console.log(HMSTimeToNumber("01-27-30","Second","-"))
console.log(HMSTimeToNumber("3600"))

打开浏览器控制台可以看到(按F12或者右键菜单-检查)
结束

希望我写的代码能帮助到大家,别忘记留言哦~