javascript - How to check whether an object is a date? - Stack Overflow
Working with Date objects in JavaScript...
JS Dates Are About to Be Fixed
Buddy got sick of unpredictable date calculations with JavaScript Date() objects
Videos
As an alternative to duck typing via
typeof date.getMonth === 'function'
you can use the instanceof operator, i.e. But it will return true for invalid dates too, e.g. new Date('random_string') is also instance of Date
date instanceof Date
This will fail if objects are passed across frame boundaries.
A work-around for this is to check the object's class via
Object.prototype.toString.call(date) === '[object Date]'
Be aware, that the instanceof solution doesn't work when using multiple realms:
JavaScript execution environments (windows, frames, etc.) are each in their own realm. This means that they have different built-ins (different global object, different constructors, etc.). This may result in unexpected results. For instance, [] instanceof window.frames[0].Array will return false, because Array.prototype !== window.frames[0].Array.prototype and arrays in the current realm inherit from the former.
You can use the following code:
(myvar instanceof Date) // returns true or false
Be aware, that this solution doesn't work when using multiple realms:
JavaScript execution environments (windows, frames, etc.) are each in their own realm. This means that they have different built-ins (different global object, different constructors, etc.). This may result in unexpected results. For instance, [] instanceof window.frames[0].Array will return false, because Array.prototype !== window.frames[0].Array.prototype and arrays in the current realm inherit from the former.