Javascript Momentjs弃用错误和不同的浏览器功能
我得到了这个错误:Javascript Momentjs弃用错误和不同的浏览器功能,javascript,reactjs,momentjs,Javascript,Reactjs,Momentjs,我得到了这个错误: Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be
Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 1-June-2017, _f: undefined, _strict: undefined, _locale: [object Object]
Error
at Function.createFromInputFallback (http://localhost/client.min.js:46682:95)
at configFromString (http://localhost/client.min.js:48540:12)
at configFromInput (http://localhost/client.min.js:48909:10)
at prepareConfig (http://localhost/client.min.js:48892:10)
at createFromConfig (http://localhost/client.min.js:48859:41)
at createLocalOrUTC (http://localhost/client.min.js:48946:13)
at createLocal (http://localhost/client.min.js:48950:13)
at Moment.isBefore (http://localhost/client.min.js:49517:49)
at http://localhost/client.min.js:46163:87
at Array.map (native)
因为代码被最小化了,我看不出到底是什么导致了它,而且有很多代码,但可能存在于以下两种情况中:
this.state = {
bookedDays: this.props.bookedDays,
today: this.props.value != "" ? moment.unix(this.props.value.substr(0, this.props.value.indexOf('|'))/1000) : moment(),
selectedFromDate: this.props.value != "" ? moment.unix(this.props.value.substr(0, this.props.value.indexOf('|'))/1000) : moment(),
selectedToDate: this.props.value != "" ? moment.unix(this.props.value.substr(this.props.value.indexOf('|')+1)/1000) : moment(),
whichDate: 0
};
var liClasses = classNames({
'whiteDate': this.state.whichDate == 0 && ((this.state.selectedFromDate.isBefore(date, 'day') && this.state.selectedToDate.isAfter(date, 'day')) || this.state.selectedFromDate.isSame(date, 'day') || this.state.selectedToDate.isSame(date, 'day'))
});
请注意,该代码仅在Chrome中有效,在正确填充类时,Firefox、IE和Edge似乎都不喜欢它。问题可能是代码第二部分中的日期是一个字符串,函数无法识别其格式
你应该使用。从错误消息中可以看出,您将2017年6月1日作为输入值传递,因此您必须使用:
moment(date, 'D-MMMM-YYYY')
您的代码如下所示:
var liClasses = classNames({
'whiteDate': this.state.whichDate == 0 &&
((this.state.selectedFromDate.isBefore(moment(date, 'D-MMMM-YYYY'), 'day') &&
this.state.selectedToDate.isAfter(moment(date, 'D-MMMM-YYYY'), 'day')) ||
this.state.selectedFromDate.isSame(moment(date, 'D-MMMM-YYYY'), 'day') ||
this.state.selectedToDate.isSame(moment(date, 'D-MMMM-YYYY'), 'day'))
});
谢谢它增加了固定它的力矩部分。供将来阅读此补丁的读者参考,我还填充了这一天,以确保它始终是两个数字,比如'01'@Wayneio-it&39;s不一定需要填充日期,因为D标记代表一个月中的1位数的日期,所以使用DD解析2位数的日期。