月“May”不适用于Moment.JS(包括小提琴)

时间:2014-04-23 11:21:39

标签: javascript jquery date momentjs

当我尝试“可能”月份时,为什么会收到“无效日期”? (这是荷兰语,所以这就是为什么有“mei”)

当我尝试月份“june”(荷兰语:“juni”)时,我没有得到“无效日期”

我不明白...... 检查小提琴:Fiddle

脚本(纯粹出于测试目的,显示月份“可能”不起作用..)

$(document).ready(function () {
    var newvartitle = "5 mei 2014";
    var goodformatdata = moment(newvartitle).format('DD/MM/YYYY');
    var newvartitle2 = "5 juni 2014";
    var goodformatdata2 = moment(newvartitle2).format('DD/MM/YYYY');
    $('.tester').append(goodformatdata);
    $('.tester').append(goodformatdata2);
});

此问题已解决,解决方法: http://jsfiddle.net/kULx3/2/

2 个答案:

答案 0 :(得分:4)

问题是您使用的语言是输出语言。例如,如果你试试这个

alert(moment("5 5 2014").lang("nl").format("DD/MMMM/YYYY"));

输出将是

  

05 /妹/ 2014

要以荷兰语接受输入,您必须实施它。例如,创建一个方法,该方法将字符串作为参数并将荷兰语月份更改为数字,因此当您调用

moment(toMoment("5 mei 2014")).lang("nl").format("DD/MMMM/YYYY")

toMoment("5 mei 2014")的返回值为5 5 2014

一个例子是

function toMoment(str){

    var result = null;
    var splitted = str.split(" ");
    var month = splitted[1];

    switch(month){
        case "mei": result = "5"; break;
    }

    return splitted[0] + " " + result + " " + splitted[2];
}

答案 1 :(得分:1)

默认情况下,Moment.js设置为英语。这可以通过将所需的语言传递到Moment.js的.lang()函数来改变:

moment.lang('en');

用英语," i" in" juni"被完全忽略了。 Moment.js只查看月份名称的前三个字母。 "六月"被视为" jun" ("六月"英文)而没有三个字母的月份以" mei"用英语。