【问题标题】:Is there a way to check if a variable is a Date in JavaScript? [duplicate]有没有办法检查变量是否是 JavaScript 中的日期? [复制]
【发布时间】:2011-02-19 08:31:07
【问题描述】:

我想知道是否有任何方法可以检查对象是否是 JavaScript 中的特定日期。 isType 返回 Date 的对象,这对于这种情况是不够的。有任何想法吗?谢谢!

【问题讨论】:

    标签: javascript date typechecking


    【解决方案1】:
    if (parseDate("datestring"))
    

    【讨论】:

    • 我假设您意识到这与检查 Date 对象类型不同,这似乎是个问题?
    • 哦!我误解了这个问题=/我的错
    【解决方案2】:

    if(obj && obj.getUTCDay){ // 我会把它当作一个日期来处理 }

    【讨论】:

    • 如果你碰巧在一个完全不相关的对象上使用了一个名为“getUTCDay”的类似方法,即使它不是日期,obj 也会返回 true。
    • 或者更有可能的是,如果有人您在代码库的某个地方编写了 getUTCDay 方法,他们将在某个时候度过一个愉快的漫长的调试下午 ;)跨度>
    【解决方案3】:

    Object.prototype.toString.call(obj) === "[object Date]" 适用于所有情况,obj instanceof Date 仅适用于来自同一视图实例 (window) 的日期对象。

    【讨论】:

    • 嗯,如果你有继承自 Date 的东西,这将不起作用,是吗?
    • Ext JS 就是这样做的。不确定其他框架,但这就是我会关注的。
    • @Claudiu:不,但老实说,我认为你永远不需要创建一个继承自 Date.prototype...、@bmoeskau 的对象实例,这是检测 kind 由内置构造函数(如ArrayRegExpDate 等)创建的对象......其他框架(如 jQuery)也将其用于detect Array objectsPrototype为此使用它并检测包装的原始值,因为这些包装器是对象,例如typeof new String("") == 'object'; 也用于检测 Opera。
    • 好吧,如果它继承自Date,它就是一个Date对象。这似乎是一个非常好的答案!
    • 不会更好地针对d.constructor.name 进行测试吗?
    【解决方案4】:

    使用实例

    (myvar instanceof Date) // returns true or false
    

    【讨论】:

    • 它适用于大多数情况,但在多帧 DOM 环境中会失败,请查看this article
    • 我用“无效日期”对其进行了测试,结果为真!!
    • 在我在日期字段中使用 DHTMLX 日历类型的情况下,这无法正常工作。
    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2013-01-15
    • 2017-10-01
    相关资源
    最近更新 更多