如何使用moment.js测试javascript对象是否为Date

How to test if a javascript object is a Date using moment.js

本文关键字:对象 是否 Date javascript 测试 何使用 moment js      更新时间:2023-10-21

我有一个字符串的Javascript数组,并希望提取遵循此格式DD/MM/YYYY的日期。

随着时间的推移,你可以检查这一点:

moment("31/12/2015", "DD/MM/YYYY").isValid(); -> true

然而,这些也被视为有效日期,而不应该被视为:

moment("1", "DD/MM/YYYY").isValid(); -> true
moment("1/", "DD/MM/YYYY").isValid(); -> true
moment("1/1", "DD/MM/YYYY").isValid(); -> true

知道我如何强制执行严格的字符串验证吗?

您希望在解析中使用严格模式。严格模式将导致Moment只匹配与格式字符串完全匹配的输入。只需将true作为您的第三个参数:

moment("1", "DD/MM/YYYY", true).isValid();
false
moment("1/", "DD/MM/YYYY", true).isValid();
false
moment("1/1", "DD/MM/YYYY", true).isValid();
false

请注意,在严格模式下,使用DD和MM代币,Moment将开始预期两位数的天数和月份。因此:

moment("1/1/2016", "DD/MM/YYYY", true).isValid();
false
moment("01/01/2016", "DD/MM/YYYY", true).isValid();
true

你可能想转到一个字母的令牌。然后任何一个都会起作用:

moment("01/01/2016", "D/M/YYYY", true).isValid();
true
moment("1/1/2016", "D/M/YYYY", true).isValid();
true

解析指南中有更多关于严格模式的方式和原因的信息:http://momentjs.com/guides/#/parsing/strict-模式/