【问题标题】:Customize certain momentjs humanized duration values自定义特定时刻 js 人性化持续时间值
【发布时间】:2017-04-12 16:31:45
【问题描述】:

简短的问题:我需要 momentjs 将 60 分钟人性化为 1 hour 而不是 an hour。无法弄清楚如何让它工作。

长问题: 刚开始使用momentjs,效果很好。我们使用它来显示仪表板的更新频率。

计时器设置为以分钟为单位的整数。我们正在使用人性化时刻选项将30 显示为30 minutes360 显示为6 hours 等。

这很好用,但不是在 2 种情况下。 60 被人性化为 an hour。我们需要它是1 hour。并且1440 显示为a day,而不是1 day

我们需要此更改,因为该列正在回答“您的指标多久更新一次?”的问题

答案是“每 1 小时”。 “每 一个 小时”不太有效。

我通读了文档并在 Google 上搜索,但找不到仅自定义几种人性化显示格式的方法。

我们已经将 true 设置为第二个参数,以仅获取此问答中不带后缀的值 - How to Customize Humanized Moment js Date Result

但该值返回为“一小时”而不是“1 小时”。

【问题讨论】:

    标签: momentjs


    【解决方案1】:

    您可以使用文档的自定义 -> Relative time 部分中记录的 updateLocale 方法。这将影响fromfromNowtotoNowhumanize 的输出。

    在您的情况下,您可以简单地更新 relativeTime 对象的 hd 键。

    这是一个工作示例:

    moment.updateLocale('en', {
      relativeTime : {
        h: "1 hour",
        d:  "1 day",
      }
    });
    
    var d1 = moment.duration(60, 'm');
    var d2 = moment.duration(1440, 'm');
    
    console.log(d1.humanize());
    console.log(d2.humanize());
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

    您可以找到更多的相对时间自定义示例herehere

    【讨论】:

    • 谢谢!很棒的信息。
    【解决方案2】:

    您可以使用持续时间对象上可用的minutes()months()years() 等方法,然后您可以创建自己的字符串。 humanize() 方法给出了持续时间的近似值,而不是确切的持续时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多