【问题标题】:Add milliseconds to formatDuration in date-fns在 date-fns 中为 formatDuration 添加毫秒
【发布时间】:2021-06-24 03:27:16
【问题描述】:

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

我已经成功地进行了转换:interval > duration > human readable format,并且一直到 seconds 都可以正常工作,但 milliseconds 被省略了。

当前代码:

 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`;

【问题讨论】:

  • 也许将intervalInMs % 1000, 10 更改为intervalInMs % 1, 10?从来没有用过那个库,但为什么不用 vanilla js 转换日期呢?

标签: javascript react-native date-fns


【解决方案1】:

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

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

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

你需要自己追加毫秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多