2010-01-27 38 views
1

下面我有函數創建得到兩個日期之間的時間差..認罪檢查它,它的正確,以及如何(30或31?乘)和年發現無月的..如何創建一個可以返回JavaScript日期差異的函數?

function days_between(date1, date2,datepart) { 

// The number of milliseconds in one day 
var ONE_DAY=0; 
if (datepart === undefined) { 
    datepart = 'D'; 
} 

if(datepart='Y') 
{  
ONE_DAY = 1000 * 60 * 60 * 24 * 30 *12 
} 
else if (datepart='M') 
{ 
ONE_DAY = 1000 * 60 * 60 * 24 * 30 
} 
else 
{ 
ONE_DAY = 1000 * 60 * 60 * 24 //for day 
} 

// Convert both dates to milliseconds 
var date1_ms = date1.getTime() 
var date2_ms = date2.getTime() 

// Calculate the difference in milliseconds 
var difference_ms = Math.abs(date1_ms - date2_ms) 

// Convert back to days and return 
return Math.round(difference_ms/ONE_DAY) 

}

+1

另見:http://www.google.com/search?hl=en&q=difference+dates+javascript+site%3Astackoverflow.com – miku 2010-01-27 10:44:34

+0

我查一下上面的代碼,並告訴我它的正確或我應該怎麼改變它...... – 2010-01-27 11:00:27

回答

2

如果你的應用程序將需要大量的日期操作方法,你可能要考慮使用類似的Datejs庫。

如果包括time.js從Datejs庫,你將能夠做到以下幾點:

var future = new Date().add({months: 5}); 
var now = new Date(); 

var span = new TimeSpan(future - now); 

console.log("Days: ", span.getDays()); 

time.js腳本是可選的,不包括在編譯/構建/版本。您可以直接從SVN repository下載它。

+0

這正是我想要的..讓我檢查.. – 2010-01-27 11:01:28

+0

收到此錯誤:錯誤:(新日期)。新增不是一個函數 源文件:http://本地主機/ td/searchhotels.aspx Line:319 – 2010-01-27 11:16:41

+0

@DNet開發者:確保你已經包含'time.js'。該文件是可選的,不包含在編譯/構建/版本中。你可以在這裏下載它:http://code.google.com/p/datejs/source/browse/trunk/src/time.js – 2010-01-27 14:38:57

0

你應該在改變之前的幾天內改變。像:

var d1 = new Date().getTime(), 
d2 = new Date(2010, 11, 31).getTime(); 
alert(Math.round((d2-d1)/24/60/60/1000) + ' days left for 2010'); 
+0

噢,對不起,你需要知道,如果你是一個閏年 – Mic 2010-01-27 11:50:51

+0

我用date.js過這些計算 – Mic 2010-01-27 11:52:35

+0

u能請給我任何像date.js的顯示date.diff – 2010-01-27 11:56:39

相關問題