如何检查一个对象是否是日期?

我在网页上有一个烦人的错误:“date.GetMonth()不是一个函数”。 所以我想我从某个地方做错了什么,并且对象日期不是Date类型的对象。 我如何检查Javascript中的数据类型? 我试图添加一个if(日期),但它不起作用。

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

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

谢谢!

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


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

typeof date.getMonth === 'function'

你可以使用instanceof运算符,也就是说它也会在无效日期返回true,例如new Date('random_string')也是Date的实例

date instanceof Date

如果对象通过帧边界传递,这将失败。

解决这个问题的方法是通过检查对象的类

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

您可以使用以下代码:

(myvar instanceof Date) // returns true or false

该函数是getMonth() ,而不是GetMonth()

无论如何,您可以通过执行此操作来检查对象是否具有getMonth属性。 它并不一定意味着该对象是一个日期,只是具有getMonth属性的任何对象。

if (date.getMonth) {
    var month = date.getMonth();
}
链接地址: http://www.djcxy.com/p/52189.html

上一篇: How to check whether an object is a date?

下一篇: What does the construct x = x