Is there a way to check if a variable is a Date in JavaScript?
我想知道是否有任何方法可以检查对象是否特别是JavaScript中的日期。 isType返回Date的对象,这对于此方案是不够的。 有任何想法吗? 谢谢!
使用instanceof
1
| (myvar instanceof Date) // returns true or false |
-
它适用于大多数情况,但在多帧DOM环境中会失败,请看一下这篇文章。
-
我用"无效日期"测试了它,它返回true!
-
在我使用日期字段中的DHTMLX日历类型的情况下,这不能正常工作。
Object.prototype.toString.call(obj) ==="[object Date]"将适用于所有情况,obj instanceof Date仅适用于来自同一视图实例(window)的日期对象。
-
嗯,如果你有从Date继承的东西,这将无效,是吗?
-
这就是Ext JS的作用。不确定其他框架,但这就是我要看的。
-
@Claudiu:不,但老实说,我认为你永远不需要创建一个继承自Date.prototype ...,@ bmoeskau的对象实例,这是检测内置对象类型的最安全方法。在像Array,RegExp,Date等构造函数中...其他框架,比如jQuery使用它来检测Array对象,Prototype也使用它来检测原始值,因为那些包装器是对象,例如typeof new String("") == 'object';并且还用于检测Opera。
-
好吧,如果它继承自Date,那么它是一个Date对象。这似乎是一个非常好的答案!
-
不会对d.constructor.name进行更好的测试吗?
if(obj&& obj.getUTCDay){
//我会把它当成日期
}
-
如果碰巧在完全不相关的对象上有一个名为"getUTCDay"的类似方法,即使它不是Date,它也会为obj返回true。
-
或者更有可能的是,如果有人在你的代码库中的某个地方写了一个getUTCDay方法,那么他们将在某个时候进行长时间的调试;)
1
| if (parseDate("datestring")) |
-
我假设你意识到这与检查Date对象类型不一样,这似乎是个问题?
-
哦!我误解了这个问题= /我的不好