有没有办法让 moment.js 输出“1 天”而不是 "a day"?

Is there a way to make moment.js output "1 day" instead of "a day"?

我正在使用 Time to X function of Moment.js。当第二个参数为true时,则结果为a day。有没有办法让这个 1 day 通过 API,或者我需要做一个字符串替换?

您可以使用string.replace方法将"a day"替换为"1 day"

或者您可以这样尝试:

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
var differenceInMillisec = a.diff(b);
var differenceInDays = a.diff(b, 'days'); //Output 1 day

好吧,有时候结果很简单,就去做吧。字符串替换只是一行代码......即使有 api 的解决方案,我相信它会比做字符串替换更多 "complicated" ......或者只是写一个可重用的函数并在结果上调用该函数,例如:replaceString(Time_to_X);其中 replaceString 是一个使用字符串 replace

的函数

对于您的问题,我有一个简单的 100% 解决方案:

moment.localeData()._relativeTime.d = '1 day'; // override 
console.log( moment.duration(1, 'days') );     // = '1 day', not 'a day'. 

这里是 fiddle 评论:https://jsfiddle.net/ichepurnoy/6bxujv8j/