如何通过moment.js修复解析错误?
Const.DATE_MONTH_FORMAT = 'DD-MMM-YYYY';
var fromDate = moment(new Date(period.fromDate)).format(Const.DATE_MONTH_FORMAT);
在Firefox上,Chrome:19-Aug-2016
在Safari上:Invalid date
在Firefox上:
console.debug(period);
Object { fromDate="19/Aug/2016", toDate="30/Aug/2016"}
答案 0 :(得分:2)
format()
用于输出,而不是用于确定输入的格式。您还要将period.fromDate
传递给Date
构造函数,而不是时刻,所以您正在使用浏览器自己的解析,当日期不符合JS规范(which DD/MMM/YYYY
doesn't)时,它可以做任何喜欢的事情。 Firefox和Chrome显然认为他们可以从period.fromDate
获取日期,而Safari则不能。您应该能够通过将字符串直接传递到片刻以及period.fromDate
的格式来解决此问题,因此它可以自己完成所有工作:
Const.DATE_MONTH_FORMAT = 'DD-MMM-YYYY';
var fromDate = moment(period.fromDate, "DD/MMM/YYYY").format(Const.DATE_MONTH_FORMAT);