我需要两个具有略微不同语言设置的momentJs实例并尝试使用according to the documentation:
var moment2 = moment();
moment2.lang('en', { ... });
时刻2中的时刻(“2014-05-22”)功能在哪里?
我需要这样的东西:
moment2("2014-05-22").calendar();
答案 0 :(得分:1)
moment.lang
提供特定于实例的配置,因此您不要将其设置为相对于工厂函数,而是设置为单个时刻实例。
我认为你应该这样做:
var local = moment('2014-05-22');
local.lang('fr', { calendar : {
lastDay : '[new]',
sameDay : '[new]',
nextDay : '[new]',
lastWeek : '[new]',
nextWeek : '[new]',
sameElse : '[new]'
}});
console.log(local.calendar());
结果:
"vendredi à 00:00"
这是法国人,但它应该是" new"。
上面的代码不起作用,因为momentjs不允许修补现有语言来定义您自己的日历。你必须设置一种新语言。他们真的需要在文档中指出这一点。 See this issue on github
答案 1 :(得分:0)
我有一个真正有效的解决方案。它会在每个calendar()调用上覆盖momentJs的全局语言设置。
moment.lang('de');
// internationalisation objects for momentJs calendar view WITHOUT time:
var momentShort = {
'de': {
calendar : {
sameDay: "[heute]",
sameElse: "L",
nextDay: '[morgen]',
nextWeek: 'dddd',
lastDay: '[gestern]',
lastWeek: '[letzten] dddd'
}
},
'en' : {
calendar : {
sameDay : '[today]',
nextDay : '[tomorrow]',
nextWeek : 'dddd',
lastDay : '[yesterday]',
lastWeek : '[last] dddd',
sameElse : 'L'
}
}
};
// internationalisation objects for momentJs calendar view WITH time:
var momentFull = {
'de': {
calendar : {
sameDay: "[heute um] LT",
sameElse: "L",
nextDay: '[morgen um] LT',
nextWeek: 'dddd [um] LT',
lastDay: '[gestern um] LT',
lastWeek: '[letzten] dddd [um] LT'
},
},
'en' : {
calendar : {
sameDay : '[today at] LT',
nextDay : '[tomorrow at] LT',
nextWeek : 'dddd [at] LT',
lastDay : '[yesterday at] LT',
lastWeek : '[last] dddd [at] LT',
sameElse : 'L'
}
}
};
moment.lang(moment.lang(), momentShort[moment.lang()]);
var cal = moment("2014-05-23");
console.log( cal.calendar() );
moment.lang(moment.lang(), momentLong[moment.lang()]);
var cal = moment("2014-05-23");
console.log( cal.calendar() );