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;//返回结果
}
调用函数
参数 | 介绍 |
---|---|
Value | 必填,时间文本 |
Type | 可空,转换类型, 可填Second(秒),Minute(分),Hour(时)。默认为秒(Second) |
Cut | 可空,分隔符 |
返回结果
字段 | 介绍 |
---|---|
Second | 秒,整数(int),不存在返回0 |
Minute | 分,整数(int),不存在返回0 |
Hour | 时,整数(int),不存在返回0 |
Time | 转换后的结果,整数(int),失败返回0 |
示例:
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或者右键菜单-检查)
若有问题,请在评论区或者私信留言