Вы могли бы попробовать что-то вроде этого:
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"));
Это будет конвертировать большинство ваших примеров правильно. Однако, если «формат» не указан 30
, он предположим, что строка уже в секундах.
В случае, если вы хотите, чтобы интерпретировать параметр как минуты, если нет постфикса, вы можете сделать это:
function parseToSeconds(timeString){
var seconds = parseFloat(timeString);
if(timeString.indexOf("h") != -1){
return seconds * 3600;
}
return seconds * 60;
}
Если строка содержит h
, вычислить секунды с переданными часов. В противном случае всегда принимайте «минуты».
Как эта система должна знать, что '30' - это минуты, а' 1' - часы? – Cerbrus
@Cerbrus хороший вопрос. В моем конкретном случае (отслеживание времени) будет хорошо иметь это условие: все строки без постфикса (только номер) должны интерпретироваться как часы, если число меньше 10, а в минутах, если число больше или равно 10. –
So , что, если вы введете '10' и хотите минуты? Как правило, это плохая идея варьировать функциональность с неясными правилами. Эти правила не облегчают использование. – Cerbrus