Moment.js 适用于 Chrome 的有效日期,但不适用于 IE 或 Firefox

Moment.js works with valid date on Chrome but not IE or Firefox

所以这在 Chrome 但在 IE(11) 和 Firefox

中工作正常
 var startDate = moment("12-Nov-2015").format("D-MMM-YYYY");
        var startTime = "10:00 AM";

        var startDateTime = moment(startDate + ' ' + startTime);
alert(moment(startDateTime).format("D-MMM-YYYY h:mm A"));

IE and Chrome just return "Invalid Date"

我缺少什么想法?

这是因为“2015 年 11 月 12 日”不是有效的 ISO 8601 格式,因此 MomentJS 回退到浏览器解析器,该解析器因浏览器而异。所以这个问题是因为 Google Chrome 接受该格式但不接受 IE 或 Firefox,而不是 Moment 的问题。

有关详细信息,请参阅此 link:http://momentjs.com/docs/#/parsing/string/

正如他们的文档所述,如果使用非 ISO 8601 格式,请在解析时指定字符串的格式,使用 http://momentjs.com/docs/#/parsing/string-format/

所以

var startDate = moment("12-Nov-2015").format("D-MMM-YYYY");

应该是

var startDate = moment("12-Nov-2015", "D-MMM-YYYY").format("D-MMM-YYYY");

有关日期解析不一致的信息,请参阅此处:http://dygraphs.com/date-formats.html