我认为答案集中在什么是记录在这里 http://documented%20here简而言之,使用函数调整部分区域设置以满足您的需求。
这是一个简短的示例:
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-short')并简单地对短值进行硬编码,然后根据需要设置区域设置。
我选择这个解决方案是因为我不知道您如何做出使用一种格式与另一种格式的决定。
为了完整起见,这取决于您知道需要操作哪个区域设置。如果区域设置的选择由最终用户决定,则问题会变得更加复杂。在这种情况下,我能想到的就是使用以下命令检索当前语言环境的配置moment.localeData()._relativeTime
并将“m”成员更改为适合您的函数。您仍然需要找到一种方法来在正确的区域设置中表达“m”和“分钟”单位(不知道如何做到这一点)。
这个解决方案确实是最后的手段,因为我不知道是否_relativeTime
随着时间的推移,它是一个安全的 API(我猜不是)。
希望这可以帮助。