Javascript 如何使用两种语言运行momentJs或复制momentJs()?

Javascript 如何使用两种语言运行momentJs或复制momentJs()?,javascript,momentjs,Javascript,Momentjs,我需要两个语言设置稍有不同的momentJs实例,并尝试了以下方法: moment2中的moment(“2014-05-22”)功能在哪里 我需要这样的东西: moment2("2014-05-22").calendar(); moment.lang提供了特定于实例的配置,因此您不需要将其设置为与工厂功能相对应的配置,而是设置为单个moment实例 我认为你应该这样做: var local = moment('2014-05-22'); local.lang('fr', { calendar

我需要两个语言设置稍有不同的momentJs实例,并尝试了以下方法:

moment2中的moment(“2014-05-22”)功能在哪里

我需要这样的东西:

moment2("2014-05-22").calendar();

moment.lang
提供了特定于实例的配置,因此您不需要将其设置为与工厂功能相对应的配置,而是设置为单个moment实例

我认为你应该这样做:

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"
它是法语,但应该是“新的”

更新
上面的代码将不起作用,因为momentjs不允许修补现有语言来定义您自己的日历。你必须设置一种新的语言。他们真的需要在文档中指出这一点

我有一个真正有效的解决方案。它会在每次calendar()调用中覆盖momentJs的全局语言设置


这是行不通的。您可以设置“fr”,但“calendar”对象将被忽略。奇怪的是,我查看了文档的列表,它们(似乎)就是这样做的。愚蠢的问题:您使用的是moment>=1.3.0的版本吗?是的。当前版本2.6.0I刚刚在momentjs的github问题跟踪器中找到了问题的“解决方案”。它似乎不起作用,因为您无法覆盖现有语言的日历规范,正如我们尝试使用
fr
所做的那样。我认为“编造一个新的语言名称”就足以解决这个问题。对于我刚才指出的问题,这是一个很好的解决方法,很高兴您找到了它。
"vendredi à 00:00"
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() );