2011-11-02 16 views
14

Voglio confrontare il compleanno dell'utente rispetto alla data odierna e ottenere il numero di giorni in mezzo. Il compleanno entrano sarà sotto forma di 1987/12/02 in una casella di input di tipo testo Confronta due date in JS

Nel mio file JS Ho codice che assomiglia a questo:

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; 
} 

Invece di usare "Natale" Voglio confrontare element.value ... come faccio a fare questo?

Quando inserisco difference = today - element.value non mi mostrerà la differenza. La finestra di avviso viene visualizzata come NaN.

+0

possibile duplicato del [Confronta 2 date con JavaScript] (http://stackoverflow.com/questions/492994/compare-2-dates-with-javascript) – Widor

+1

@widor no, il mio Q è specifico ... – BigBug

+1

La tua domanda è specifica, sì, ma quella domanda risponde. – Blender

risposta

141

Ho scritto una libreria data leggero chiamato Moment.js per gestire cose come questa.

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

Amo Moment.js. Ottimo lavoro. –

+5

Il momento richiede molta della formattazione e della manipolazione scadute. Lavoro fantastico – RevNoah

+4

Il momento è la cosa migliore del mondo. – jtromans