2013-11-20 70 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