我想告诉JS中有效和无效日期对象之间的区别,但无法弄清楚如何:
var d = new Date("foo");
console.log(d.toString()); // shows 'Invalid Date'
console.log(typeof d); // shows 'object'
console.log(d instanceof Date); // shows 'true'
Run Code Online (Sandbox Code Playgroud)
编写isValidDate函数的任何想法?
Date.parse用于解析日期字符串,它提供了一种检查日期字符串是否有效的权威方法.Date实例,这最容易验证.Date实例,然后测试它Date的时间值.如果日期无效,则时间值为NaN.我用ECMA-262检查了这个行为是标准的,这正是我正在寻找的.我想知道是否有任何方法可以检查对象是否特别是JavaScript中的日期.isType返回Date的对象,这对于此方案是不够的.有任何想法吗?谢谢!
可能重复:
在JavaScript中检测"无效日期"日期实例
IsDate()javascript中有功能吗?
const isObjectClass = (value: any, className: any) => (Object.prototype.toString.call(value) === `[object ${className}]`);
export const isDate = (value: any) => isObjectClass(value, 'Date');
const time = (time: Date): string => {
return ((isDate(time) && !isNaN(time)) ? time : new Date()).toISOString();
};
Run Code Online (Sandbox Code Playgroud)
在上面的函数中time,我检查输入是否是有效的 Date 对象。如果有效,它将返回传递的日期的字符串版本。如果无效,它将返回当前日期的字符串版本。
问题isDate()是,它将返回 true 输入值new Date()和new Date(undefined))。为了避免这种情况,我使用了!isNaN()return false 的情况!isNaN( new Date(undefined) )。
现在的问题是打字稿不允许我将Date对象传递给isNaN函数。
错误
TS2345: Argument of type 'Date' is not assignable to parameter …Run Code Online (Sandbox Code Playgroud)