将文本解析为日期的Moment.js似乎与区域设置不匹配

时间:2014-12-05 13:41:46

标签: javascript momentjs

字符串12.01.2015,例如德国代表2015年1月12日。但以下代码并未按预期运作:

moment.locale('de');
moment('12.01.2015').toString(); // "Tue Dec 01 2015 00:00:00 GMT+0100"
moment('12.01.2015').fromNow(); // "in einem Jahr" (==> locale setting is OK)

在locale / de.js中有以下内容:

longDateFormat : {
    ...
    L : 'DD.MM.YYYY',
    ...
}

为什么我认为字符串不被解析?

2 个答案:

答案 0 :(得分:3)

Momen的语言环境设置所需的输出时刻。不是输入。您需要提供如下输入格式:

moment('12.01.2015', 'DD.MM.YYYY')

有关此行为将来如何变化的详细说明,请参阅this github页面。

您可以将其包装在一个函数中,这样您就不必随身携带格式:

function germanMoment(date){
    return moment(date, 'DD.MM.YYYY')
}

然后您只需使用germanMoment('12.01.2015').fromNow()即可。

答案 1 :(得分:2)

时刻parse method表示ISO 8601字符串。您必须指定日期格式。

moment("12.01.2015", "DD.MM.YYYY")