我正在使用 momentjs
来检查字符串是否是有效日期。
momentjs 具有以下验证格式:
moment(date, formats, true).isValid()
就我而言,我不想给出格式,因为我只想检查字符串是否是有效日期,我不关心格式。 我尝试了以下方法:
moment("date string").isValid()
尽管这给出了正确的响应,但我也在控制台中收到错误。有没有办法只检查日期是否没有格式?
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: Sat Sep 08 2050 01:27:14 GMT+0530 (India Standard Time), _f: undefined, _strict: undefined, _locale: [object Object]
Error
at Function.createFromInputFallback (F:\myproj\backend\node_modules\moment\moment.js:320:98)
at configFromString (F:\myproj\backend\node_modules\moment\moment.js:2385:15)
at configFromInput (F:\myproj\backend\node_modules\moment\moment.js:2611:13)
at prepareConfig (F:\myproj\backend\node_modules\moment\moment.js:2594:13)
最佳答案
JavaScript 只有一种官方日期/时间格式,即 defined in the specification基于 ISO-8601,例如 “2019-09-07T08:16:55.216Z”
。 Moment 告诉您的是,您没有提供用于解析日期的格式,并且日期不适合 JavaScript 的格式,因此 Moment 不得不回退到使用 new Date
并希望它能做正确的事情。正如消息所述,这在浏览器中是不可靠的,因为它们都可以实现自己的“...特定于实现的启发式或特定于实现的日期格式...” ( source )。这意味着 Chrome 解析的给定字符串可能无法在 Safari 上解析,或者更糟的是,可能会以不同方式进行解析(例如,使用本地时间与 UTC)。
结果是:除非日期采用 JavaScript 格式,否则要获得可靠的结果,您必须告诉 Moment 使用什么格式来解析它。
关于javascript - 使用 moment 检查字符串是否为有效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57831908/