2014-02-06 50 views
1

我想檢查08/2014是否大於02/2014 ..如何檢查一個月/年是否大於當前月/年的Javascript

我該怎麼做在JavaScript?可能有人幫我請...

目前我只檢查未來的一年。這是代碼片段。

this.isDateGreaterThanCurrent=function(b){ 
    return parseInt(b)>parseInt(new Date().getFullYear()); 
}; 
+0

我更喜歡[moment.js](http://momentjs.com/),然後..'時刻( 「08/2014」, 「MM/YYYY」)。isBefore(時刻(「02/2014」,「MM/YYYY」))。但是,您可以自由地手動完成此操作。我將首先創建一個接收「02/2014」並返回「2014-02」的函數;那麼可以用詞法*與標準字符串比較進行比較。 – user2864740

回答

1

Date對象可以比較彼此。因此,不要解析它們,您可以將它作爲date對象本身。

function isDateGreaterThanToday(b) { 
    var dS = b.split("/"); 
    var d1 = new Date(dS[1], (+dS[0] - 1)); 
    var today = new Date(); 
    if (d1 > today) { 
     return "D is greater"; 
    } else { 
     return "today is greater"; 
    } 
} 

console.log(isDateGreaterThanToday("08/2014")) 

JSFiddle

1

你就要成功了...... 使用拆分方法來創建一個數組出你的約會的

this.isDateGreaterThanCurrent=function(b){ 

var a = b.split('/'); 

if(parseInt(a[1])>parseInt(new Date().getFullYear())) return true; 
else if (parseInt(a[1]) == parseInt(new Date().getFullYear()) && parseInt(a[0])>parseInt(new Date().getMonth())+1)return true; 

else return false; 
}; 

不要忘記的getMonth返回值從0到11,而不是從1到12 !

1

隨着moment.js(我推薦),然後..

var d1 = moment("08/2014", "MM/YYYY") 
var d2 = moment("02/2014", "MM/YYYY") 
d1.isBefore(d2) // false 
d1.isAfter(d2) // true 

然而,這可以通過手工完成毫不費力。

創建了在 「MM/YYYY」 返回 「YYYY-MM」 的功能。然後可以將結果與標準字符串比較進行比較。主要的第一個組件佈局是像ISO 8601這樣的格式很好的一個原因 - 即使是字符串,它也可以很容易地訂購。

function toPartialIso(str) { 
    var m = str.match(/(\d{2})\/(\d{4})/); 
    if (m) { 
     return m[2] + "-" + m[1] 
    } 
    throw "bad date!" 
} 

toPartialIso("08/2014") < toPartialIso("02/2014") // false 
toPartialIso("08/2014") > toPartialIso("02/2014") // true 
1

構建體2與

new Date(year, month) //month start from 0 (ie january is 0) 

如日期對象,

d1 = new Date(2014, 7)  // 08/2014 (month - 1) 
d2 = new Date(2014, 1)  // 02/2014 

現在檢查,

Date.parse(d1) > Date.parse(d2) 

Date.parse(),解析日期的字符串表示,並返回噸他從1970年1月1日,當地時間00:00:00開始的毫秒數。

1

要比較兩個日期這是在您的格式,我們要分析的日期,並提取月份和年份,並比較他們

其較受歡迎的使用一些第三方庫

  1. datejs
  2. momentjs

如果你想這樣做手工樣品代碼看起來像

function checkMonths(month1, month2) { 
     var m1 = month1.split("/"); 
     var m2 = month2.split("/"); 
     var res = -1; 

     if(parseInt(m1[1]) > parseInt(m2[1])) { 
      res = 1; 
     } else if(parseInt(m1[1]) == parseInt(m2[1])) { 
      if(parseInt(m1[0]) > parseInt(m2[0])) { 
       res = 1; 
      } else if(parseInt(m1[0]) == parseInt(m2[0])) { 
       res = 0; 
      } 
     } 
     return res; 
} 

工作演示JSFiddle demo

相關問題