2015-10-14 18 views
0
匹配兩個日期對象

我有以下腳本試圖在JavaScript

腳本

$('#test1').click(function() { 

    // Here are the two dates to compare 
    var date1 = '29-10-2015'; 
    var date2 = '29-12-2015'; 
    var Targetvalue = parseFloat("1000000"); 
    var dealjson = '[{"dealdate":"25-12-2015","cost":200000},{"dealdate":"25-11-2015","cost":200000}]'; 

    // First we split the values to arrays date1[0] is the year, [1] the month and [2] the day 
    date1 = date1.split('-'); 
    date2 = date2.split('-'); 

    // Now we convert the array to a Date object, which has several helpful methods 
    date1 = new Date(date1[2], date1[1] - 1, date1[0]); 
    date2 = new Date(date2[2], date2[1] - 1, date2[0]); 
    var deals = JSON.parse(dealjson); 
    var achieved = 0; 

    while (date1 <= date2) { 
     var next_day = new Date(date1); 
     next_day.setDate(date1.getDate() + 1); 
     achieved = 0; 
     deals.forEach(function (deal) { 
      var dealDate = deal.dealdate; 
      dealDate = dealDate.split('-'); 
      dealDate = new Date(dealDate[2], dealDate[1] - 1, dealDate[0]); 

      if (dealDate === date1) console.log("matched" + date); 
     }); 

     date1 = next_day; 
    } 

}); 

我試圖登錄到控制檯如果兩個迴路中的日期從JSON數組日期匹配dealjson雖然我有兩個日期落在日期1和日期2之間但仍然沒有發生匹配

if (dealDate === date1) console.log("matched" + date); 

這裏是FIDDLE

任何一個可以幫助我哪裏是錯誤

回答

0

要檢查兩個日期的相等在JavaScript中,你必須00:00:00 1970年以來月1得到他們的「的毫秒數UTC「並比較這些值。

爲了得到這個號碼,使用日期的getTime()方法:

if (dealDate.getTime() === date1.getTime()) console.log("matched" + date); 

查看更新後的JSFiddle demo

+0

如果我想這個月都要做那我怎麼辦? – Vikram

+0

你是什麼意思?你想檢查兩個日期是否有同一個月嗎? – Andrea

+0

嗯,我的意思是說,我應該明智地運行循環,並且如果日期落入相關月份,我應該登錄到控制檯。 – Vikram

0

當您使用=====比較Date情況下,它只會爲是真實的一樣Date實例,不是相當於Date實例。

,看看他們是否有完全相同的時間,使用+getTime()

if (+dealDate === +date1) 
// or 
if (dealDate.getTime() === date1.getTime()) 

這是不是與你的其他日期的關係,<=一個問題,因爲<=強求它的參數元。 =====不這樣做,如果雙方都是對象。

+0

@ T.JCrowder你能指導我如何計算兩個給定日期之間的總月數,然後匹配json的日期,並在日期與該特定月份匹配時登錄到控制檯 – Vikram

0

您需要將日期放在時間戳中。

var dc1=new Date(dealDate).getTime(); 
var dc2=new Date(date1).getTime(); 

if(dc1===dc2) console.log("matched"+date1); 

$('#test1').click(function() { 
 

 
    // Here are the two dates to compare 
 
    var date1 = '29-10-2015'; 
 
    var date2 = '29-12-2015'; 
 
    var Targetvalue = parseFloat("1000000"); 
 
    var dealjson = '[{"dealdate":"25-12-2015","cost":200000},{"dealdate":"25-11-2015","cost":200000}]'; 
 

 
    // First we split the values to arrays date1[0] is the year, [1] the month and [2] the day 
 
    date1 = date1.split('-'); 
 
    date2 = date2.split('-'); 
 
    
 
    // Now we convert the array to a Date object, which has several helpful methods 
 
    date1 = new Date(date1[2], date1[1]-1, date1[0]); 
 
    date2 = new Date(date2[2], date2[1]-1, date2[0]); 
 
    var deals = JSON.parse(dealjson); 
 
    var achieved = 0; 
 

 
       while (date1 <= date2) { 
 
        var next_day = new Date(date1); 
 
        next_day.setDate(date1.getDate() + 1); 
 
        achieved = 0; 
 
        deals.forEach(function (deal) { 
 
         var dealDate = deal.dealdate; 
 
         dealDate = dealDate.split('-'); 
 
         dealDate = new Date(dealDate[2], dealDate[1]-1, dealDate[0]); 
 
        
 
         
 
        var dc1=new Date(dealDate).getTime(); 
 
        var dc2=new Date(date1).getTime(); 
 
         
 
         if(dc1==dc2){ 
 
          console.log("matched"+date1); 
 
          $(".varianceData").text("matched"+date1); 
 
        } 
 
         
 
         
 
        }); 
 
     
 
       date1 = next_day; 
 
    } 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button id="test1">See the Tab Day </button> 
 
<div class="varianceData"></div>