自定义某些momentjs人性化持续时间值

时间:2017-04-12 16:31:45

标签: momentjs

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

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

定时器设置为以分钟为单位的整数。我们使用人性化时刻选项将30显示为30 minutes,将360显示为6 hours等。

这很好但不是2例。 60人性化为an hour。我们需要1 hour1440显示为a day,而不是1 day

我们需要进行此更改,因为该专栏正在回答问题"您的指标多久更新一次?"

答案是"每1小时"。 "每一个小时"并不是很有效。

我通过文档阅读并用Google搜索,但无法找到一种方法来自定义一些人性化的显示格式。

我们已经将true设置为第二个参数,以获得此问题和答案中没有后缀的值 - How to Customize Humanized Moment js Date Result

但价值又回归了一个小时'而不是1小时'。

enter image description here

2 个答案:

答案 0 :(得分:2)

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

在您的情况下,您只需更新h对象的drelativeTime个键。

这是一份工作样本:

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

答案 1 :(得分:0)

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