2013-11-20 28 views
0

我正在尝试计算JavaScript中两个日期对象之间的日期差异。但是,当我尝试使用Math.round函数时,我获得了NaN为什么我的日期无效日期

的问题出现在这条线

var deliveryDays = Math.round(Math.abs((currentDate.getTime() - basketDate.getTime())/(oneDay))); 

请参见下面的代码:

function datePicker() { 
    $('#datePicker').datepicker(); 

    $('.ui-datepicker').addClass('datePicker'); //This is added to the class ui-datepicker which is generated when the date picker is generated. 
    var currentDate = $.datepicker.formatDate('dd-mm-yy', new Date()); // Get today's date. 
    currentDate = new Date(currentDate); // Convert string to date (string must be an appropriate format. 

    $("#datePickerConfirmation").click(function() { 
     var basketDate = $('#datePicker').datepicker('getDate'); 
     basketDate = $.datepicker.formatDate('dd-mm-yy', new Date(basketDate)); // Changes the date format to dd-mm-yyyy. 
     basketDate = new Date(basketDate); 

     // This block works out the difference between the current date and the selected date. 
     var oneDay = 24 * 60 * 60 * 1000; 
     var deliveryDays = Math.round(Math.abs((currentDate.getTime() - basketDate.getTime())/(oneDay))); 

     basketDate = basketDate.toString(); 
     currentDate = currentDate.toString(); 
     deliveryDays = deliveryDays; 

     var result = window.confirm('Confirm Date: ' + basketDate + '\n \nDays to Delivery: ' + deliveryDays); 
     if (result == true) { 
      console.log("User pressed Ok/Confirm Date set to: " + basketDate); 
      // Do nothing 
     } else { 
      console.log("User pressed Cancel, basket set to null"); 
      basketDate = null; 
      console.log(basketDate); 
     } 
    }); 
} 
+0

看看[这里](HTTP:// stackoverflow.com/questions/17064540/date-function-not-working-in-ie8/17064680#17 064680)了解详情。无论如何,你格式化日期为“dd-mm-yyyy”,但这可能不是格式日期构造函数接受...只是删除线,你格式日期字符串,然后转换回日期... –

回答

0

您不必再日期转换为字符串,然后日期。替换这些行

var currentDate = $.datepicker.formatDate('dd-mm-yy', new Date()); // Get today's date. 
currentDate = new Date(currentDate); 

与此

var currentDate = new Date(); 

除了这些线路

basketDate = $.datepicker.formatDate('dd-mm-yy', new Date(basketDate)); // Changes the date format to dd-mm-yyyy. 
basketDate = new Date(basketDate); 

与此

basketDate = new Date(basketDate); 
+0

是的,你是回答led我来解决这个问题。 我不得不完全删除字符串转换,并将数据格式移到Math后面,以便格式化为输出给用户。 – Nikolai5