2015-03-18 4 views
0

Есть ли какой-либо плагин для преобразования времени в различном формате в целое значение (в секундах), которое я могу хранить в БД?Анализатор времени, читаемого человеком

Примеры:

  • "30m" =>1800
  • "30" =>1800
  • "2h" =>7200
  • "0.5h" =>1800
  • ".5h" =>1800
  • "1" =>60

Если нет постфикса, число должно быть разобрано как минуты.

+2

Как эта система должна знать, что '30' - это минуты, а' 1' - часы? – Cerbrus

+0

@Cerbrus хороший вопрос. В моем конкретном случае (отслеживание времени) будет хорошо иметь это условие: все строки без постфикса (только номер) должны интерпретироваться как часы, если число меньше 10, а в минутах, если число больше или равно 10. –

+0

So , что, если вы введете '10' и хотите минуты? Как правило, это плохая идея варьировать функциональность с неясными правилами. Эти правила не облегчают использование. – Cerbrus

ответ

1

Вы могли бы попробовать что-то вроде этого:

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, вычислить секунды с переданными часов. В противном случае всегда принимайте «минуты».

+0

спасибо, ваш ответ полезен. –

+1

@limonte: Я немного изменил свой ответ, чтобы позволить ему разбирать строки, пропускающие параметр в виде минут. – Cerbrus

Смежные вопросы