Moment.js适用于Chrome上的有效日期,但不适用于IE或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和Chrome只返回“无效日期”

我缺少什么想法?

这将是因为“2015年11月12日”不是有效的ISO 8601格式,因此MomentJS回归到浏览器解析器,根据浏览器的不同,这是完全不同的。 所以这个问题可能是因为Google Chrome接受了这种格式而不是IE或Firefox,而不是Moment的问题。

有关更多详细信息,请参阅此链接: 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