2013-10-22 64 views
2

如何比較以下兩個日期?比較兩個javascript字符串日期

var start_date = $('#start_date').text(); 
var end_date = $('#end_date').text(); 
alert(start_date + ' ' + end_date); // '2013-01-01 2013-01-02' 

# how to do the following? 
if (start_date > end_date) {...} 
+0

將這些字符串轉換爲本機JS'Date'對象。現在他們是字符串,並將使用字符串規則進行比較。 –

+0

[與JavaScript比較日期]的可能的重複(http://stackoverflow.com/questions/492994/compare-dates-with-javascript) – Jorge

+0

如果你知道他們總是年月日,那麼字符串比較是好的。 –

回答

15

如果這始終是這種格式(yyyy-mm-dd/2013-01-01),那麼你可以比較的字符串

var d1 = '2013-11-01', d2 = '2013-11-02'; 
console.log(d1 < d2); // true 
//console.log(d1.getFullYear()); won't work, not date object 

See Lexicographical order

字典序的一個重要開發在 的ISO 8601表現日期格式化方案,其表示日期爲 YYYY-MM-DD。這個日期排序適合於日期的簡單 電腦排序,使得排序算法不 需要從非數字字符的字符串處理日期字符串任何不同 的數字部分,日期進行排序 成按時間順序排列。但是請注意,對於這項工作,有 必須始終全年四個數字,二爲一個月,兩個 一天

但是,你可以用它來比較日期

var d1 = new Date("11-01-2013"); 
var d2 = new Date("11-04-2013"); 
console.log(d1); 
console.log(d1.getMonth()); // 10 (0-11) 
console.log(d1.getFullYear()); // 2013 
console.log(d1.getDate()); // 1 
console.log(d1 < d2); // true 

Check this fiddle

1

嘗試使用時間戳。

var date1 = +new Date("2013-11-01"); 
var date2 = +new Date("2013-11-04"); 

console.log(date1); 
console.log(date2); 

console.log(date1>date2);