在本教程中,我们推荐了几种检查传递给方法的参数是否为 Date 类型的方法。
有一个可行且可能是检查对象类的最佳解决方案:
Object.prototype.toString.call(input) === '[object Date]'
例子:
let isDate = function (input) {
if (Object.prototype.toString.call(input) === "[object Date]")
return true;
return false;
};
console.log(isDate("April 14, 2016 11:15:00"));
console.log(isDate(new Date(96400000)));
console.log(isDate(new Date(89, 5, 11, 10, 23, 20, 0)));
console.log(isDate([1, 3, 5, 0]));
还有一些其他的方法。
其中之一是使用 instanceof 运算符,如下所示:
date instanceof Date
例子:
let myDate = new Date(); console.log(myDate instanceof Date);
但是,对于无效日期,它也会返回 true,例如,new Date('random_string') 也是 Date 的一个实例。
如果对象跨帧边界传递,这将失败。
还有另一种解决方案建议检查对象是否具有 getMonth() 属性:
let dt = new Date("March 14, 1982 23:15:00");
if (dt.getMonth) {
let month = dt.getMonth();
console.log(month);
}
但是,如果我们想检查它是否是 Date ,而不仅仅是具有 getMonth() 函数的对象,请使用以下命令:
let dt = new Date("April 14, 2016 13:12:00");
function isValidDate(value) {
let dateWrapper = new Date(value);
console.log(!isNaN(dateWrapper.getDate()));
}
isValidDate(dt)
给定的代码将创建值的副本(如果它是日期),或者创建一个无效的日期。
然后我们可以检查新日期的值是否无效。
toString() 方法
所有对象都有一个 toString() 方法,当对象应该表示为文本值时,或者以期望字符串的方式引用对象时,会调用该方法。
每个对象都继承了从 Object 继承的方法。
如果未在自定义对象中覆盖,则 toString() 方法返回“[对象类型]”,其中 type 是对象的类型。
日期:2020-06-02 22:16:11 来源:oir作者:oir
