我想知道为什么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/

10-11 11:34