Я пытаюсь отобразить таймер обратного отсчета, используя библиотеку date-fns и действую следующим образом, не могу найти решение в реакции.
Ожидаемый результат: 60 дней: 8 часов: 9минут: 5 секунд осталось
const finishTime = new Date("01/01/2020");
const currentTime = new Date();
Добавление результатов в массив для последующего перемещения:
results.push(differenceInMonths(finishTime, currentTime));
results.push(differenceInDays(finishTime, currentTime));
results.push(differenceInHours(finishTime, currentTime));
results.push(differenceInMinutes(finishTime, currentTime));
results.push(differenceInSeconds(finishTime, currentTime));
Добавление ручной логики для получения времени из секунд.Очевидно, должна быть лучшая логика с / без использования библиотеки, которую мне не хватает:
const monthsRemaining = results[4] / (30 * 24 * 3600); // this will anyways fail as 30 days is not common for every month
const daysRemaining = (monthsRemaining % 1) * 30;
const hoursRemaining = (daysRemaining % 1) * 24;
const minutesRemaining = (hoursRemaining % 1) * 60;
const secondsRemaining = (minutesRemaining % 1) * 60;
return (
<div>
{Math.round(monthsRemaining)} Months : {Math.round(daysRemaining)}{" "}
days : {Math.round(hoursRemaining)} hours :{" "}
{Math.round(minutesRemaining)} minutes :{" "}
{Math.round(secondsRemaining)} seconds
</div>
);
Любые предложения или указатели на правильные методы, так как я не вижу такой прямой реализации, я мог бысм. только метод formatDistance, который содержит только одну единицу