2015-01-26 6 views
0

У меня возникла проблема при попытке выполнить некоторую логику вычислений с использованием JavaScript. В основном по маршруту 80 шагов, и для завершения всего маршрута потребовалось около 9 минут.JavaScript вычисляет время и секунды

Так что я пытался сделать автоматический маршрут, который расскажет вам минуты, оставшиеся до места назначения. Моя логика, как показано ниже:

9 * 60/80 = 6.75 

Так в основном за каждый шаг 6.75 секунд, но я хотел показать, как круглое число 9 вместо 8,4 минут. Вот код:

getAllBusLoc(function(busList) {   
      var totalBusLoc = busList.length; 
      var busLeftPct = Math.round(parseFloat(busList.length) * 40/100) 

      document.getElementById("busStopLeft").innerHTML = totalBusLoc; 
      pointArr.forEach(function(coord,index){ 
       setTimeout(function(){ 

        var travelTime = document.getElementById(travelDistMin").value;    
    moveNext(coord.x, coord.y); 

       }, 1000* index); 
      }); 
     }); 

Я получил время в пути как переменное время в пути, которое в этом случае составляет 9 минут. Для каждой точки я хотел минус 6,75 секунды с 9 минут и отображать круглый номер вместо 8.2.

Любые идеи?

Заранее спасибо.

+1

вниз ума избирателей объяснить? – hyperfkcb

+0

Пример массива 'busList'? – gotomanners

+0

На самом деле это не имеет ничего общего с массивом busList. Это в основном цикл шагов из pointArr. Для каждого шага я хотел минус общее время поездки, которое составляет 9 минут на 6,75 секунды. – hyperfkcb

ответ

1

Используйте Math.round() для вычитания 6.75 из путешествия. Это будет округлено до ближайшего целого числа.

+0

Большое спасибо! Мне удалось выяснить логику – hyperfkcb

+0

Лучший ответ - это тот, который вы сами определяете –

1

Идея, которую я мог бы предложить, - написать общую функцию, которая преобразует десятичный временной интервал (например, 8.25 минут) в его эквивалентное значение «mm: ss» вместо округления, чтобы вы отображали точное представление времени:

Number.prototype.toMMSS = function() { 
    d = this; 
    var sign = d < 0 ? "-" : ""; 
    var min = Math.floor(Math.abs(d)) 
    var sec = Math.floor((Math.abs(d) * 60) % 60); 
    return sign + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec; 
}; 

Пример:

8.25.toMMSS()  // "08:15" 

JSFiddle

Или, вы можете попробовать момент плагин duration функции, как:

moment.duration(8.25, 'minutes').minutes(); // 8 

Или метод humanize округлить:

console.log(moment.duration(8.51, "minutes").humanize()); // "9 minutes" 
console.log(moment.duration(8.15, "minutes").humanize()); // "8 minutes" 
+0

Спасибо, я решил его инициализировать две переменные, одну для отображения одной для расчета и использовать Math.round() для ее получения :) – hyperfkcb

+0

Нет заботы, рад, что ты нашел способ пойти – chridam

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

  • Нет связанных вопросов^_^