我想知道为什么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);
最佳答案
这是一个可以按预期工作的版本:(小提琴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
”)作为第二个参数,以指定字符串使用的格式。关于javascript - Moment.js处理德语Dezember和Januar的不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54448063/