简短的问题:我需要时刻将60分钟人性化为1 hour
而不是an hour
。无法弄清楚如何让它发挥作用。
长问题: 刚开始使用momentjs,效果很好。我们使用它来显示仪表板的更新频率。
定时器设置为以分钟为单位的整数。我们使用人性化时刻选项将30
显示为30 minutes
,将360
显示为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小时'。
答案 0 :(得分:2)
您可以使用自定义中记录的updateLocale
方法 - >文档的Relative time部分。这会影响from
,fromNow
,to
,toNow
和humanize
的输出。
在您的情况下,您只需更新h
对象的d
和relativeTime
个键。
这是一份工作样本:
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>
答案 1 :(得分:0)
您可以使用持续时间对象上可用的诸如minutes()
,months()
,years()
之类的方法,然后可以创建自己的字符串。 humanize()
方法给出的是持续时间的近似值,而不是确切的持续时间。