2010-12-13 14 views
1

J'essaye de calculer les jours sur la méthode de flou de la date de fin. Mais j'ai reçu 'NAN'. Qu'est-ce qui pourrait être faux? J'ai reçu 'NAN'.Différence de date dans JQuery reçu NAN

$('#EndDate').blur(function() { 

    var diff = dateDiff($('#StartDate').val(), $('#EndDate').val()); 
    alert(diff); 

}); 

function dateDiff(startDate, endDate) { 
    return endDate.getDate() - startDate.getDate(); 
} 

Répondre

2

.getDate() n'est pas défini pour les objets de chaîne (qui est ce que .val() vous donne), vous obtiendrez 2 undefined des variables qui tentent de soustraire les uns les autres en bagarre et undefined - undefined === NaN.


Au lieu de cela, vous devez obtenir la date des deux préparateurs et les date de soustraire comme ceci:

$('#EndDate').blur(function() { 
var diff = dateDiff($('#StartDate').datepicker("getDate"), 
        $('#EndDate').datepicker("getDate")); 
alert(diff); 
}); 

function dateDiff(startDate, endDate) { 
    if(endDate && startDate) //make sure we don't call .getTime() on a null 
    return (endDate.getTime() - startDate.getTime())/(1000*60*60*24); 
    return "You must complete both dates!"; 
} 

En outre, au lieu de blur, j'utiliser l'événement onSelect fourni, comme ceci:

$('#EndDate').datepicker({ 
    onSelect: function() { 
    var diff = dateDiff($('#StartDate').datepicker("getDate"), 
         $('#EndDate').datepicker("getDate")); 
    alert(diff); 
    } 
}); 

You can test it out here.

+0

J'ai reçu "l'objet ne prend pas en charge" message d'erreur à endDate.getTime() – nav100

+1

@ NAV100 - vous n'utilisez pas le datepicker jQuery UI? si non ... qu'est-ce que vous utilisez, et je suis très confus par vos étiquettes de questions ... –

+0

Date de fin est nulle. J'ai donc reçu un message d'erreur. – nav100

0

Cela a fonctionné pour moi

function calculate(start_date,end_date)   
{ 

    var t1= start_date ; 

    var t2= end_date; 

    // The number of milliseconds in one day 

    var one_day=1000*60*60*24; 

    //Here we need to split the inputed dates to convert them into standard format 

    var x=t1.split(“/”); 

    var y=t2.split(“/”); 

    //date format(Fullyear,month,date) 

    var date1=new Date(x[2],(x[1]-1),x[0]); 

    var date2=new Date(y[2],(y[1]-1),y[0]); 

    //Calculate difference between the two dates, and convert to days 

    numberofDays=Math.ceil((date2.getTime()-date1.getTime())/(one_day)); 

    // numberofDays gives the diffrence between the two dates. 

    $(‘#Input_type_text).val(numberofDays); 

}