问题描述和重现步骤:
我正在使用最新的(2.19.1)版本的时刻库。我有一个输入日期(比如说今天下午5点),然后从当前时间减去它,然后将其人性化。
moment.duration(moment({hour:17}).diff(moment({hour:16, minute:45}))).humanize() //output: 15 minutes
moment.duration(moment({hour:17}).diff(moment({hour:17, minute:15}))).humanize() //output: 15 minutes
对于上面的第2行,它应区分输出与第1行的对比。
根据人性化的结果,我在UI上显示消息,比如“剩下15分钟”。但由于相反值的输出相同,我无法显示正确的信息。
虽然我已经在github向Momentjs团队提出了这个问题,但是想知道是否有人可以在这里帮助堆栈溢出。
答案 0 :(得分:1)
您可以使用humanize(true)
默认情况下,返回字符串是无后缀的。如果你想要一个后缀,请传入true,如下所示。
这是一个实时样本:
console.log( moment.duration(moment({hour:17}).diff(moment({hour:16, minute:45}))).humanize(true) ); //output: in 15 minutes
console.log( moment.duration(moment({hour:17}).diff(moment({hour:17, minute:15}))).humanize(true) ); //output: 15 minutes ago

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>
&#13;
如果需要,您可以使用updateLocale
自定义时刻显示Relative Time。
moment.updateLocale('en', {
relativeTime : {
future: "in %s",
past: "%s remaining"
}
});
console.log( moment.duration(moment({hour:17}).diff(moment({hour:16, minute:45}))).humanize(true) ); //output: in 15 minutes
console.log( moment.duration(moment({hour:17}).diff(moment({hour:17, minute:15}))).humanize(true) ); //output: 15 minutes ago
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>
&#13;