javascript - 使用 moment 检查字符串是否为有效日期

标签 javascript node.js momentjs

我正在使用 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/

相关文章:

javascript - 无法使用 Angular 矩更改时区

javascript - 想在打开另一个 div 时关闭一个 div

JavaScript将字符串转换为包含 ":"的对象

javascript - Moment.js - 从输入表单创建 "time"变量

momentjs - 如何使用 HH :mm format? 在 moment js 中添加分钟

javascript - 测试中的 NestJS 全局模块

javascript - location.href 中的 URL 缺少 searchParams

javascript - 使用 'back' 按钮时 Div 的类不持久

javascript - React 导航栏在屏幕中,即使它不在路由器上

javascript - 取消 componentWillUnmount 方法中的所有 Subscriptions 和 Asyncs,如何?