¿Cómo comprobar si un objeto es una fecha?

Resuelto Martin asked hace 15 años • 29 respuestas

Tengo un error molesto en una página web:

date.GetMonth() no es una función

Entonces supongo que estoy haciendo algo mal. La variable dateno es un objeto de tipo Date. ¿Cómo puedo verificar un tipo de datos en Javascript? Intenté agregar un if (date), pero no funciona.

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

Entonces, si quiero escribir código defensivo y evitar que se formatee la fecha (que no es una), ¿cómo lo hago?

¡Gracias!

ACTUALIZACIÓN: No quiero verificar el formato de la fecha, pero quiero estar seguro de que el parámetro pasado al método getFormatedDate()sea de tipo Date.

Martin avatar Mar 14 '09 00:03 Martin
Aceptado

Como alternativa a escribir pato mediante

typeof date.getMonth === 'function'

puede usar el instanceofoperador, es decir, pero también devolverá verdadero para fechas no válidas, por ejemplo, new Date('random_string')también es una instancia de Fecha

date instanceof Date

Esto fallará si los objetos cruzan los límites del marco.

Una solución alternativa para esto es verificar la clase del objeto mediante

Object.prototype.toString.call(date) === '[object Date]'
Christoph avatar Mar 13 '2009 17:03 Christoph

Puedes utilizar el siguiente código:

(myvar instanceof Date) // returns true or false
SF_dev avatar Apr 24 '2013 13:04 SF_dev