如何检查对象是否为日期?

2022-08-29 22:27:01

我在网页上有一个烦人的错误:

日期。GetMonth() 不是函数

所以,我想我做错了什么。该变量不是 类型的对象。如何在Javascript中检查数据类型?我试图添加一个,但它不起作用。dateDateif (date)

function getFormatedDate(date) {
    if (date) {
       var month = date.GetMonth();
    }
}

那么,如果我想编写防御性代码并防止日期(不是一个)被格式化,我该怎么做?

谢谢!

更新:我不想检查日期的格式,但我想确保传递给该方法的参数是 类型 。getFormatedDate()Date


答案 1

作为鸭子打字的替代方案,通过

typeof date.getMonth === 'function'

您可以使用运算符,即,但对于无效日期,它也将返回true,例如 也是 Date 的实例instanceofnew Date('random_string')

date instanceof Date

如果对象跨帧边界传递,则此操作将失败。

解决此问题的方法是通过以下方式检查对象的类

Object.prototype.toString.call(date) === '[object Date]'

答案 2

您可以使用以下代码:

(myvar instanceof Date) // returns true or false