【发布时间】:2022-01-13 22:06:11
【问题描述】:
我正在运行下面的代码,检查字符串是否为日期。我的输入值之一是 'text',它返回 NaN 值,但我的 if 子句无法按预期工作。
function isDate(myDate) {
console.log('myDate = ' + myDate);
return Date.parse(new Date(myDate));
}
// var date1 = '1/5/22'; // good date
var date1 = 'test'; // bad date
var whatDate = isDate(date1);
console.log('date = ' + whatDate);
if (whatDate == 'NaN') {
console.log('bad date');
} else {
console.log('good date');
}
【问题讨论】:
-
NaN不是字符串。使用Number.isNaN(whatDate) -
检查或测试函数,特别是如果它的名称中还带有前缀
is,则应始终仅返回一个布尔值。因此,OP 首先会以用户期望它工作的方式实现这样的功能。其次,OP 在测试函数的实现中确实处理了一次NaN问题。 -
在
Date.parse(new Date(myDate))中,Date.parse 或 new Date 都是多余的。除非您知道该值是 ECMA-262 支持的格式(本质上是 ISO 8601 或 toString 生成的格式),否则您永远不应该将解析留给内置解析器。
标签: javascript date datetime validation parsing