Momentjs diff然后人性化为相反的值返回相同的输出

时间:2017-11-02 07:34:59

标签: momentjs

问题描述和重现步骤:

我正在使用最新的(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团队提出了这个问题,但是想知道是否有人可以在这里帮助堆栈溢出。

1 个答案:

答案 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;
&#13;
&#13;

如果需要,您可以使用updateLocale自定义时刻显示Relative Time

&#13;
&#13;
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;
&#13;
&#13;