获取 date-fns 中两个日期之间的持续时间,以天:小时:分钟:秒格式

Posted

技术标签:

【中文标题】获取 date-fns 中两个日期之间的持续时间,以天:小时:分钟:秒格式【英文标题】:Getting duration between two dates in date-fns in days:hrs:mins:secs format 【发布时间】:2020-01-25 04:41:54 【问题描述】:

我正在尝试使用 date-fns 库显示倒数计时器并按照以下方式执行操作,但无法在 react 中找到解决方案。

预期输出: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 方法

【问题讨论】:

***.com/a/52550254/4283738 谢谢@joyBlanks 但我一直在寻找使用 date-fns 库的解决方案 【参考方案1】:

intervalToDuration 是您正在寻找的。​​p>

// Get the duration between January 15, 1929 and April 4, 1968.
intervalToDuration(
  start: new Date(1929, 0, 15, 12, 0, 0),
   end: new Date(1968, 3, 4, 19, 5, 0)
)
// =>  years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 

https://date-fns.org/v2.16.1/docs/intervalToDuration

【讨论】:

以上是关于获取 date-fns 中两个日期之间的持续时间,以天:小时:分钟:秒格式的主要内容,如果未能解决你的问题,请参考以下文章

date-fns - 有没有办法获取短日期格式字符串

使用 ISO-8601 格式的 date-fns 获取当前日期

在 Moment Js 中获取两个日期之间的小时差

在javascript中计算两个日期时间之间的持续时间

使用 date-fns 格式化持续时间(从 seconds 开始)

如何使用 date-fns 找到一周中最近的一天