如何在Javascript中检查月/年是否大于当前月/年

时间:2014-02-06 05:43:35

标签: javascript

我想检查08/2014是否大于02/2014 ..

我怎样才能在Javascript中做到这一点?有人可以帮我吗...

目前我只检查未来一年。这是代码段。

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

5 个答案:

答案 0 :(得分:2)

使用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 :(得分:1)

你快到了...... 使用split方法在日期之外创建数组

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!

答案 2 :(得分:1)

使用

构造两个日期对象
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以来的毫秒数。

答案 3 :(得分:1)

要比较格式中的两个日期,我们必须解析日期并提取月份和年份并进行比较

它优先使用一些第三方库

  1. datejs
  2. momentjs
  3. 如果您想手动执行此操作,示例代码如下所示

    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

答案 4 :(得分: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