如何使用两种不同的自定义RELATIVETIME?(How do I use two differe

2019-10-22 03:21发布

我想用在一些地方很短的一个(例如{m: "1m"}和一个长在别人(例如{m: "one minute"}

Answer 1:

我觉得周围的答案是什么中心, 这里记录总之,调整语言环境的一部分,以满足您的需要使用的功能。

下面是一个简短的示例:

var useshort = false;

moment.locale( 'en', {
    relativeTime : {
        future: "in %s",
        past:   "%s ago",
        s:  "seconds",
        m:  function (/* number, withoutSuffix, key, isFuture */) { 'use strict';
         return useshort ? "1m" : "1 minute";
        },
        mm: "%d minutes",
        h:  "an hour",
        hh: "%d hours",
        d:  "a day",
        dd: "%d days",
        M:  "a month",
        MM: "%d months",
        y:  "a year",
        yy: "%d years"
    }
});

console.log(moment().subtract(1, "minute").fromNow() ); // 1 minute ago
console.log(moment().subtract(2, "minute").fromNow() ); // 2 minutes ago

useshort = true;
console.log(moment().subtract(1, "minute").fromNow() ); // 1m ago
console.log(moment().subtract(2, "minute").fromNow() ); // 2 minutes ago

由于您的需求大约是“M”,我们可以安全地忽略的参数(我认为),因为他们没有想改变。 我显示第2分钟偏差来表明我们确实只修改了的“M”的行为。

如果这是你太乱(使用在区域设置范围的变量)的另一种选择,当然,使自己的地方(“EN-短”),并简单地硬编码的短值,然后设置区域设置为你的需要。 我选择了这个解决方案,因为我不知道你怎么不得不做出使用format VS对方的决定。

是完整的,这依赖于你知道需要操纵该区域的事实。 如果语言环境的选择是由最终用户,问题就变得更复杂一点。 在这种情况下,所有我能想到的将是检索使用的当前区域的配置moment.localeData()._relativeTime和“M”成员更改为适合您的功能。 你仍然必须找出一种方式来表达的“M”,并在适当的区域设置“分钟”单位(不知道如何做到这一点)。 该解决方案确实是一个不得已而为之,因为我不知道,如果_relativeTime是随着时间的推移安全的API(我猜不会)。

希望这可以帮助。



文章来源: How do I use two different relativeTime customizations?
标签: momentjs