2013-11-14 54 views
0

我有下面的代碼,我遇到了麻煩。我想獲取日期字符串並轉換爲日期對象。然後計算這個日期到今天的日期。兩個日期之間的計數天數

下面的例子應該返回「6天」,而是返回「35天」。

var tmp = '20/11/2013'; 
var myDateParts = tmp.split("/");      
var oneDay = 24*60*60*1000; 
var today = new Date(); 
var secondDate = new Date(myDateParts[2], myDateParts[1], myDateParts[0]); 
var diffDays = Math.round(Math.abs((secondDate.getTime() - today.getTime()))/(oneDay)); 

console.log(diffDays+' days'); 

任何人都可以看到我哪裏去錯了。

感謝

+0

這不是一個很難在網絡搜索 – charlietfl

回答

2

月份是基於零,因此11月手段(35天今天和20之間的正確差,2013 11月14日,2013年12月)。

改變這一行:

var secondDate = new Date(myDateParts[2], myDateParts[1], myDateParts[0]); 

要這樣:

var secondDate = new Date(myDateParts[2], parseInt(myDateParts[1])-1, myDateParts[0]); 
0

的javascript日期構造認爲0至平均一月,1是指二月,等
所以,你需要減去1從應用getTime之前的'tmp'月份值。

0

你有一個錯誤的錯誤 - 它看起來像月是零索引。看到這個的jsfiddle:http://jsfiddle.net/62YK6/

var tmp = '21/10/2013'; 
var myDateParts = tmp.split("/");      
var oneDay = 24*60*60*1000; 
var today = new Date(); 
var secondDate = new Date(myDateParts[2], myDateParts[1], myDateParts[0]); 
var diffDays = Math.round(Math.abs((secondDate.getTime() - today.getTime()))/(oneDay)); 

console.log(secondDate); 
console.log(diffDays+' days'); 
+0

DOH解決的話題!大聲笑感謝您的幫助 – arbme

相關問題