Получите процент времени, прошедшего между двумя датами JavaScript - PullRequest
4 голосов
/ 12 января 2011

Я пытаюсь определить, сколько дней осталось в учебном году, и вернуть его в виде индикатора выполнения jQuery UI.

Индикаторы выполнения jQuery UI принимают только проценты.Как узнать процентную долю того, как далеко я нахожусь в промежутке времени между двумя указанными датами, учитывая сегодняшнюю дату?

Ответы [ 3 ]

9 голосов
/ 12 января 2011

Пример: http://jsfiddle.net/FLaJM/4/

var start = new Date(2005,0,1),
    end = new Date(2021,0,1),
    today = new Date();

alert( Math.round(100-((end - start) * 100 ) / today) + '%' );

или, если вы хотите, чтобы процент остался:

Пример: http://jsfiddle.net/FLaJM/3/

alert( Math.round(((end - start) * 100 ) / today) + '%' );
1 голос
/ 08 января 2015

Если вы используете MomentJS , который я настоятельно рекомендую для Javascript, вы можете сделать следующее:

var percentOfDayRangeComplete = function(start, end) {
    var now = moment();
    start = start || moment(now).startOf('day');
    end = end || moment(now).endOf('day');
    var totalMillisInRange = end.valueOf() - start.valueOf();
    var elapsedMillis = now.valueOf() - start.valueOf();
    // This will bound the number to 0 and 100
    return Math.max(0, Math.min(100, 100 * (elapsedMillis / totalMillisInRange)));
};

jsFiddle , чтобы увидеть его в действии ...

0 голосов
/ 12 января 2011

Самый простой способ (алгоритмически - вы можете вычислить код как упражнение) - это:

  1. Определите количество дней, которые у вас есть в учебном году (обычно ~ 185 для большинства государственных школ)
  2. Рассчитайте количество школьных дней, оставшихся между вашей текущей датой и окончанием занятий (убедитесь, что вы игнорируете выходные, праздничные дни, дни обслуживания и т. Д., Поскольку они не являются частью 185)
  3. Возьмите значение из второго шага и разделите его на первое. Это даст вам ваш процент.
  4. Показать это в индикаторе прогресса пользовательского интерфейса jQuery.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...