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
所以这在 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