Как узнать процент прошедшего времени?

Отображаю посетителю количество % прошедшего времени в виде полосы загрузки.

Есть:
  • $NOW = unixtime, текущее время
  • $START = unixtime, момент, когда началось действие
  • $INTERVAL = интервал, 600 (10 мин.)
  • $TOTAL = всего процентов должно быть на шкале
Для вычисления прогресса пишу:
$progress  = $TOTAL - ($TOTAL- ($NOW - $START) / $INTERVAL * $TOTAL);
/*echo 'Осталось: ' . date('i мин. s сек.', $START + $INTERVAL  - $NOW);*/


Не допустил ли я ошибку при вычислении % прогресса?
  • Вопрос задан
  • 3443 просмотра
Пригласить эксперта
Ответы на вопрос 2
Ну, если раскрыть скобки, то представленная формула эквивалентна следующей:
$progress = ($NOW - $START) / $INTERVAL * $TOTAL;
В остальном все верно.
Ответ написан
@Koss1024
На сколько я понял вы отображаете процент от прошедших 10 минут начиная со времени START до NOW
Я вот только не понял что такое TOTAL? Это 100% или как?

то есть прошло времени:
passed = now - start

Это составляет:
percentage = 100% * passed/interval = 100 * (now-start)/interval // final formula
процентов от вашей переменной INTERVAL.

На сколько я понимаю это и есть прогресс.

Чтобы проверить корректность пишут тесты:
Проверим краевые условия:
при 0 прошедшего времени:
passed = now - start = 0
percentage = 100% * 0/interval = 0%

при времени равном now = interval+start
passed = now - start = interval+start-start = interval
percentage = 100% * passed/interval = 100% * interval/interval = 100%

посредине получится 50% соответственно.

Вы это хотели получить?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы