我想知道为什么moment.js会造成月份差异。例如德语: Mai,März,Oktober和Dezember无法将其转换为Date()。每隔一个月工作一次。我认为因为这四个月的开头三个字母与英语相同。德语的Jan / uar与英语的Jan / uary相同。这样就行了。
我在全球范围内都将德语设置为德语,所以我不知道为什么会这样。
这里是fiddle进行测试。和代码:
var now = moment('7. Dezember 2016').toDate();
alert(now);
var now = moment('9. Januar 2016').toDate();
alert(now);
答案 0 :(得分:3)
这是一个可以正常工作的版本:(小提琴http://jsfiddle.net/akuxjoge/)
moment.locale('de');
let dt = moment("7. Dezember 2016", "LL").toDate();
alert(dt);
dt = moment("9. Januar 2016", "LL").toDate();
alert(dt);
我使用语言环境中随附的最新版的moment.js。
https://momentjs.com/downloads/moment-with-locales.min.js
您的代码存在问题
您不能仅将任何日期格式传递给moment()
函数。 momentjs将仅识别某些特定格式。如果无法识别格式,它将把解析字符串作为日期/时间的任务传递给浏览器。因此,您看到的特定行为是您的浏览器尝试解析该字符串。
从字符串创建时刻时,我们首先检查该字符串是否与已知的ISO 8601格式匹配,然后再检查该字符串是否与RFC 2822日期时间格式匹配,然后返回到新的Date(string)的后退,如果找不到已知格式。 (https://momentjs.com/docs/#/parsing/string/)
要解决此问题,请指定format(在这种情况下为“ LL
”)作为第二个参数,以指定字符串使用的格式。