关于Moment.js warning:Deprecation warning: value provided is not in a recognized RFC2822 or ISO format

Posted Kabukiyo Lin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Moment.js warning:Deprecation warning: value provided is not in a recognized RFC2822 or ISO format相关的知识,希望对你有一定的参考价值。


近期在接手一个项目时,发现原代码运行时会报一个关于Moment.js的warning。

Warning信息:

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.

通过信息大概知道warning的意思是:所提供的值并不是被识别的RFC822或ISO格式。
相信有小伙伴在做项目时会遇到这个warning,虽然这个warning并不是自己写出来的,但既然看到了那就处理一下。

错误代码:

                if (typeof a === 'string') {
                    const aDate = moment(a), bDate = moment(b);
                    if (aDate.isValid() && bDate.isValid()) {
                        return balbabla
                    } else {
                        return balbabla
                    }
                } else {
                    return balbabla
                }

解决方案

const aDate = moment(a), bDate = moment(b);

改作下面任意一句

const aDate = moment(a,moment.ISO_8601), bDate = moment(b,moment.ISO_8601);
const aDate = moment(a,moment.RFC_2822), bDate = moment(b,moment.RFC_2822);

这样value就以正确且可被识别的格式提供并使用了,便不会再报关于format的warning

以上是关于关于Moment.js warning:Deprecation warning: value provided is not in a recognized RFC2822 or ISO format的主要内容,如果未能解决你的问题,请参考以下文章

javascript 关于使用Moment.js的博客文章的代码示例

TypeScript + moment.js:错误 TS2307:找不到模块'moment'

moment.js 是单例吗?

moment.js的常用方法

moment.js的方法总结

Moment.js:moment(string,format)源码解析