2011-10-05 161 views
0

我已經閱讀了很多關於計算javascript日期差異的文章和問題,但是我找不到它們的格式。JavaScript計算兩個日期之間的差異yy-mm-dd

我不需要小時,分鐘或相信它或毫秒......我只需要幾天。我正在檢查以確保有一天發生在同一天或之後。

日期格式2010-10-05

我嘗試這樣做,但我得到的是楠:

var diff = Math.floor((Date.parse(end_date) - Date.parse(start_date))/86400000); 

回答

4

我理解你確實不需要知道多少天除了這兩天,你只需要知道他們是否是同一日期,如果是晚一點的話。在這種情況下,經常使用字符串比較可以告訴您,只要您始終使用格式「yyyy-mm-dd」,兩位數的月份和兩位數的天數;例如'2010-10-05'<'2010-10-16'。

+0

男人,我只是如此習慣JavaScript是如此過分complecated我甚至不期待一個簡單的答案。謝謝! – Oseer

+0

不客氣! – ruakh

0

你首先要分析的日期。但建在Date.parse可能無法識別它。起始於以下:

var dateStr = "2010-10-05"; 
var regex = /(\d{4})-(\d{2})-(\d{2})/.exec(dateStr); 
var date = new Date(regex[1], regex[2] - 1, regex[3]); //Tue Oct 05 2010 00:00:00 GMT+0200 (CEST) 

Date對象的兩個實例,你可以反正你喜歡比較。然而,你的條件檢查是否有兩個日期是在24小時內,我想這不是你想要的,因爲你的日期沒有時間戳...

+0

感謝您的幫助。 – Oseer

0

我希望這會幫助你在Firefox

t1="2010-12-20"; //date1 
    t2="2010-12-30"; //date2 

    var one_day=1000*60*60*24; 

    var x=t1.split("-");  
    var y=t2.split("-"); 

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

    var month1=x[1]-1; 
    var month2=y[1]-1; 

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

alert(_Diff); 
1

正常工作:

DEMO

var start_date = "2010-10-05" 
var end_date = "2010-10-15" 
var diff = Math.floor((Date.parse(end_date) - Date.parse(start_date))/86400000); 
alert(diff) 

but perhaps this is safer: 

var diff = Math.floor(
    (
     Date.parse(
      end_date.replace(/-/g,'\/') 
    ) - Date.parse(
      start_date.replace(/-/g,'\/') 
    )    
    )/86400000); 
alert(diff) 
0

簡簡單單就,切出的第一10chars代替 ' - ' 與' '然後以end_date開始日期。

這是一個醜陋的方式來做到這一點,但是很容易,所以它在任何語言的作品;)