2013-10-28 52 views
-1

這是非常簡單的,UOT我不知道爲什麼if語句是從未星期二:的Javascript:比較日期爲數字

var sFrom = $('#from').val(); //2013-10-04 
var sTo = $('#to').val(); //2013-10-06 

var dFrom = Date.parse(sFrom); 
var dTo = Date.parse(sTo); 

var dFullDate = new Date(item.created*1000); 
var sDate = dFullDate.getFullYear() + "-" + (dFullDate.getMonth()+1) + "-" + dFullDate.getDate(); 
var dDate = Date.parse(sDate); //2013-10-5 should work, but nothing works 

if((dDate > dFrom) && (dDate < dTo)){ 
    insertItem(i, item); 
} 

UPDATE

它是在比較兩個日期,其中其中一個有一個數字的日期或月份(如果少於10個)。因此,我所做的只是添加了一個將其轉換爲兩位數的函數,現在可以進行比較。

function parseDateToYYYYMMDD(date){ 
    var year = date.getFullYear(); 
    var month = date.getMonth()+1; 
    var day = date.getDate(); 

    if(month < 10){ 
     month = "0" + month; 
    } 

    if(day < 10){ 
     day = "0" + day; 
    } 

    var sDate = year + "-" + month + "-" + day; 
    var dDate = Date.parse(sDate); 
    return dDate; 
} 
+4

而不是使用JavaScript本機實現,您應該嘗試使用moment.js,併爲您的問題提供更好的描述總是一個好主意 –

+2

「不工作」不是一個有用的問題描述。說出你期望的結果,你看到的結果,以及爲什麼你會驚訝。 –

+0

if語句從不爲真。雖然它應該是真實的(與我提到的日期) – mzereba

回答

1

根據您所使用的瀏覽器,Date.parse可能不支持YYYY-MM-DD格式,這是隻增加了規格爲ECMAScript5(大約在四年前)的。

雖然它從來沒有在規範中,幾乎所有的瀏覽器都支持YYYY/MM/DD

因此,例如,儘管your codesource)適用於Chrome,但它不適用於IE8。如果我們update it to use / instead of -source),它適用於Chrome和IE8。

或者,當然,你總是可以自己分析它:

function parseYYYYMMDD(str) { 
    var parts = str.split('-'); 
    return +new Date(
     parseInt(parts[0], 10),  // Year 
     parseInt(parts[1], 10) - 1, // Month (starts with 0) 
     parseInt(parts[2], 10)  // Day 
    ); 
} 

如果你正在做的工作日期的很多,它可能是值得一試的日期庫像MomentJS。雖然可能矯枉過正只是爲了添加它。