javascript-如何使用 moment.js(或替代库)解析日期以选出 2 月 31 日或 6 月 31 日等。无效?

标签 javascript datetime momentjs

如何使用 moment.js(或替代库)解析日期以挑​​选出 2 月 31 日或 6 月 31 日 e、t、c 为无效日期?

我知道如果我这样做

moment("20-02-2000");

它说

Moment {_isAMomentObject: true, _i: "20-02-2000", 
_isUTC: false, _locale: Locale, _d: Invalid Date}

所以它可以检测到无效日期,这很好

虽然我使用的是 yyyy-mm-dd

我似乎无法让它解析日期

moment("2000-02-31");
Moment {_isAMomentObject: true, _i: "2000-02-31", 
_f: "YYYY-MM-DD", _isUTC: false, _pf: Object…}

^^ 那里没有关于无效日期的信息

moment("2000-02-40");
Moment {_isAMomentObject: true, _i: "2000-02-40", 
_f: "YYYY-MM-DD", _isUTC: false, _pf: Object…}

^^ 那里没有关于无效日期的信息

moment("2000-40-01");
Moment {_isAMomentObject: true, _i: "2000-40-01", 
_f: "YYYY-MM-DD", _isUTC: false, _pf: Object…}

^^ 那里没有关于无效日期的信息

已添加

var v=moment("2000-02-31");

v.toDate()
Thu Mar 02 2000 00:00:00 GMT+0000 (GMT Standard Time)

^^ 我发现,如果我给出像 2 月 31 日这样的无效日期,它就会将其标准化,但我希望它只是说无效。

我正在寻找一个函数,我给它“2000-31-02”,它说无效日期。

我已经看到建议将 moment.js 作为 javascript 的 Date 构造函数的替代品。我查看了 moment.js,因为 javascript 的 Date 构造函数也解析了 2 月 31 日,而没有说无效 javascript Date.parse assumes 31 days in February and all months? 。所以我希望 moment.js 能够做到这一点。如果可以的话,怎么办?如果没有,那么有没有 moment.js 的替代方案可以做到这一点?

我正在寻找一个可以导入的库,而不是重新发明轮子。

最佳答案

您可以首先使用 moment().isValid() 检查 moment 是否认为日期有效。

console.log(moment('2015-02-31').isValid());
//false

http://jsfiddle.net/nicholasduffy/uv8aqykm/

http://momentjs.com/docs/#/parsing/string-format/

关于javascript-如何使用 moment.js(或替代库)解析日期以选出 2 月 31 日或 6 月 31 日等。无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32286062/

相关文章:

c++ - 使用 C++ 创建包含今天日期的文件夹

javascript - 使用 moment.js 获取一个月中星期日的数量

javascript - 如何将我的日期转换为适合执行新 Date() 的格式?

javascript - 类似正则表达式查询字符串的字符串

javascript - HTML 自动刷新页面但先检查连接

c# - 为什么从一个时区转换到另一个时区如此困难?

javascript - Moment.js |不以预期的日期格式显示

javascript - jQuery 特效组合

javascript - 正则表达式适用于在线测试器,不适用于 Typescript Regexp

C++ 日期时间类