JavaScript RangeError: Invalid time value 错误
在无效日期调用方法时会出现“Uncaught RangeError: Invalid time value”错误,例如 new Date(‘asdf’).toISOString()。 要解决该错误,请在调用该方法之前有条件地检查日期是否有效。
console.log(new Date('asdf')); // ?️ "Invalid Date"
// ⛔️ Uncaught RangeError: Invalid time value
const d = new Date('asdf').toISOString();
检查浏览器控制台或终端(如果使用 Node.js)中的错误消息。
上面的截图显示错误发生在 index.js 文件的第 4 行。
当提供的字符串不是有效日期时,Date() 构造函数返回“无效日期”值。 在无效日期调用方法会导致错误。
console.log(new Date('asdf')); // ?️ Invalid Date
console.log(new Date('2022-32-33')); // ?️ Invalid Date
console.log(new Date('one-two-20')); // ?️ Invalid Date
要解决“Invalid time value”错误,请仅在有效日期对象上调用日期方法。
console.log(new Date(1317996123)); // ?️ Fri Jan 16 ...
console.log(new Date('24 September 2022 15:30 UTC')); // ?️ Sat Sep 24 ...
这是一个函数,我们可以使用它在调用方法之前验证日期。
function dateIsValid(date) {
return !Number.isNaN(new Date(date).getTime());
}
console.log(dateIsValid(1317996123)); // ?️ true
console.log(dateIsValid('24 September 2022 15:30 UTC')); // ?️ true
console.log(dateIsValid('asdf')); // ?️ false
console.log(dateIsValid('2022-32-33')); // ?️ false
如果日期无效,
getTime()
方法将返回一个 NaN(不是数字)值。
我们检查该值是否不是 NaN 并返回结果。 如果该值不是 NaN,则我们有一个可以安全调用方法的有效日期。
function dateIsValid(date) {
return !Number.isNaN(new Date(date).getTime());
}
const date = '2022-32-33';
if (dateIsValid(date)) {
console.log(new Date(date).toISOString());
} else {
// ?️ this runs
console.log('not a valid date');
}
在对日期调用 toISOString() 方法之前,我们对其进行验证。 这使我们能够避免出现“Invalid time value” RangeError。
总结
在无效日期调用方法时会出现“Uncaught RangeError: Invalid time value”错误,例如 new Date(‘asdf’).toISOString()。 要解决该错误,请在调用该方法之前有条件地检查日期是否有效。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。