首页 > 解决方案 > 在 date-fns 中为 formatDuration 添加毫秒

问题描述

我想使用date-fnsReact Native 将毫秒数转换为人类可读的格式。

我已经设法进行了转换:interval > duration > human readable format并且一直到都可以正常工作,但是省略了毫秒。

当前代码:

 const niceFormatDuration = (intervalInMs) => {
    const milliseconds = Number.parseInt(intervalInMs % 1000, 10);
    const duration = intervalToDuration({ start: 0, end: intervalInMs });
    return formatDuration(duration);
 };

上面的代码工作正常,但缺少毫秒。我已将毫秒添加到持续时间对象中:

duration["milliseconds"] = milliseconds;

formatDuration仍然只返回到几秒钟。

还尝试向 中添加新milliseconds格式formatDuration,但会引发错误。

{
      format: [
        "years",
        "months",
        "weeks",
        "days",
        "hours",
        "minutes",
        "seconds",
        "milliseconds", // Not working with this line
      ],
    }

显然我可以在字符串末尾手动添加毫秒,但这看起来很难看:

return `${formatDuration(duration)} ${milliseconds} ms`;

标签: javascriptreact-nativedate-fns

解决方案


来自 date-fns 文档:https ://date-fns.org/v2.19.0/docs/Duration

Duration 对象不存储毫秒,所以这是不可能的。

向对象添加附加属性不会改变使用持续时间的函数的实现。函数根本不期望也不寻找这个属性。

您需要自己附加毫秒。


推荐阅读