Как узнать текущее значение ползунка прогресбара между двух дат в процентах?

введите сюда описание изображения

Возникла необходимость в реализации анимации прогрессбара. Нужно узнать, до какого уровня двигать ползунок.

Входные динамические данные, которые отдает сервер это:

const tournamentStart = "2021-05-09T15:04:23.000Z"; // нач турнира
const tournamentEnd = "2021-06-11T19:12:23.000Z"; //конец турнира



let currentTimeMilisec = new Date().getTime(); /// Текущее время в мс которое считаем от 1970 но момент посещения страницы
let tournamentStartMilisec = new Date(tournamentStart).getTime(); // Дата начала турнира в мс от 1970
let tournamentEndMilisec = new Date(tournamentEnd).getTime(); // Дата окончания турнира в мс от 1970
let timeToFinsh = tournamentStartMilisec + tournamentEndMilisec - currentTimeMilisec; /// время которое от сего момента до конца турнира


let procForRank = ((currentTimeMilisec * 100) / timeToFinsh).toFixed(4); /// Формула по которой я считаю это процентное значение нахождения позиции ползунка


console.log("procForRank = ", procForRank);

Сложность и непонимание в том, что расстояние между тем временем, что прошло с 1 января 1970 года, это очень большое время по сравнению с длительностью турнира и у меня этот procForRank (по моей формуле расчета) всегда находится в приделах 98~99%.

Подскажите, как написать правильную формулу для определения procForRank?


Ответы (1 шт):

Автор решения: nörbörnën

const tournamentStart = "2021-05-09T15:04:23.000Z";
const tournamentEnd = "2021-06-11T19:12:23.000Z";
const q100 = Date.parse(tournamentEnd) - Date.parse(tournamentStart);
const qNow = Date.now() - Date.parse(tournamentStart);
console.log(`${100 * qNow / q100}%`);

→ Ссылка