我想用在一些地方很短的一个(例如{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?