人类可读的时间解析器
Human readable time parser
是否有任何插件可以将各种格式的时间转换为我可以存储在数据库中的整数值(秒)?
示例:
"30m"
=> 1800
"30"
=> 1800
"2h"
=> 7200
"0.5h"
=> 1800
".5h"
=> 1800
"1"
=> 60
如果没有后缀,数字应该被解析为分钟。
您可以尝试这样的操作:
function parseToSeconds(timeString){
var seconds = parseFloat(timeString);
if(timeString.indexOf("m") != -1){
seconds *= 60;
}
if(timeString.indexOf("h") != -1){
seconds *= 3600;
}
return seconds;
}
alert("1: " + parseToSeconds("1") + "\n" +
"1m: " + parseToSeconds("1m") + "\n" +
"1h: " + parseToSeconds("1h") + "\n" +
"1.5: " + parseToSeconds("1.5") + "\n" +
"1.5m: " + parseToSeconds("1.5m") + "\n" +
"1.5h: " + parseToSeconds("1.5h"));
这将正确转换您的大部分示例。但是,如果没有指定 "format" 30
,例如,它会假定字符串已经以秒为单位。
如果您想将参数解释为分钟,如果没有后缀,您可以这样做:
function parseToSeconds(timeString){
var seconds = parseFloat(timeString);
if(timeString.indexOf("h") != -1){
return seconds * 3600;
}
return seconds * 60;
}
如果字符串包含 h
,则根据过去的小时数计算秒数。否则,始终假设 "minutes".
是否有任何插件可以将各种格式的时间转换为我可以存储在数据库中的整数值(秒)?
示例:
"30m"
=>1800
"30"
=>1800
"2h"
=>7200
"0.5h"
=>1800
".5h"
=>1800
"1"
=>60
如果没有后缀,数字应该被解析为分钟。
您可以尝试这样的操作:
function parseToSeconds(timeString){
var seconds = parseFloat(timeString);
if(timeString.indexOf("m") != -1){
seconds *= 60;
}
if(timeString.indexOf("h") != -1){
seconds *= 3600;
}
return seconds;
}
alert("1: " + parseToSeconds("1") + "\n" +
"1m: " + parseToSeconds("1m") + "\n" +
"1h: " + parseToSeconds("1h") + "\n" +
"1.5: " + parseToSeconds("1.5") + "\n" +
"1.5m: " + parseToSeconds("1.5m") + "\n" +
"1.5h: " + parseToSeconds("1.5h"));
这将正确转换您的大部分示例。但是,如果没有指定 "format" 30
,例如,它会假定字符串已经以秒为单位。
如果您想将参数解释为分钟,如果没有后缀,您可以这样做:
function parseToSeconds(timeString){
var seconds = parseFloat(timeString);
if(timeString.indexOf("h") != -1){
return seconds * 3600;
}
return seconds * 60;
}
如果字符串包含 h
,则根据过去的小时数计算秒数。否则,始终假设 "minutes".