Получение длительности между двумя датами в формате date-fns в днях: часы: минуты: секунды - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь отобразить таймер обратного отсчета, используя библиотеку 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, который содержит только одну единицу

...