2011-11-02 26 views
14

Quiero comparar el cumpleaños del usuario con la fecha de hoy y obtener el número de días en el medio. El cumpleaños que ingrese será en forma de 12/02/1987 en un cuadro de entrada de texto tipo Comparar dos fechas en JS

En mi archivo JS tengo código que se parece a esto:

function validateDOB(element) { 
var valid = false; 

var today = new Date(); 
var dd = today.getDate(); 
var mm = today.getMonth() + 1; //do that January is NOT represented by 0! 
var yyyy = today.getFullYear(); 

if (dd < 10) { 
    dd = '0' + dd 
} 
if (mm < 10) { 
    mm = '0' + mm 
} 

var today = mm + '/' + dd + '/' + yyyy; 
alert(today); 
if (element.value != today) { 
    var days = 0; 
    var difference = 0; 

    Christmas = new Date("December 25, 2011"); 

    today = new Date(); 

    difference = today - Christmas 

    days = Math.round(difference/(1000 * 60 * 60 * 24)-1); 
    alert(days); 
    valid = true; 
} 

lugar de usar "Navidad" Quiero comparar element.value ... ¿cómo hago esto?

Cuando puse difference = today - element.value no me mostrará la diferencia. El cuadro de alerta aparece como NaN.

+0

posible duplicado de [Comparar 2 fechas con JavaScript] (http://stackoverflow.com/questions/492994/compare-2-dates-with-javascript) – Widor

+1

@widor no, mi Q es específico ... – BigBug

+1

Su pregunta es específica, sí, pero esa pregunta la responde. – Blender

Respuesta

141

escribí una biblioteca fecha ligero llamado Moment.js para manejar este tipo de cosas.

var birthday = moment('12/02/1987', 'MM-DD-YYYY'); 
var inputDate = moment(element.value, 'MM-DD-YYYY'); 
var diff = birthday.diff(inputDate, 'days'); 

http://momentjs.com/docs/#/displaying/difference/

+24

Me encanta Moment.js. Buen trabajo. –

+5

El momento toma mucho del formato y la manipulación desactualizados. Impresionante trabajo. – RevNoah

+4

El momento es lo mejor del mundo. – jtromans