javascript中的月份比较

时间:2016-04-03 10:00:49

标签: javascript

我有两个输入字段,我们在其中输入Month-year。并以图形表示显示数据。  字段1:扬-2016  字段2:扬-2015

我必须比较和此字段,如果Field1> Field2则必须显示警告消息。

如何在java脚本中进行比较

输入类型格式为月 -

6 个答案:

答案 0 :(得分:1)

您可以在代码中使用此小样本

var date_1 = new Date('2017', '01');
var date_2 = new Date('2015', '02');

if (date_1.getTime() > date_2.getTime()) {

  /* YOUR CODE */
}

更新:2016/04/21

使用+运算符(更简洁):

if (+new Date('2017', '01') > +new Date('2015', '02')) {

  /* YOUR CODE */
}

使用valueOf()

if (new Date('2017', '01').valueOf() > new Date('2015', '02').valueOf()) {

  /* YOUR CODE */
}

答案 1 :(得分:1)

您可以分隔字符串并查找月份编号并返回所需的比较。

function greater(f1, f2) {
    function getDate(f) {
        var d = f.split('-');
        d[0] = { jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12 }[d[0].toLowerCase()] || 0;
        return d;
    }

    var d1 = getDate(f1),
        d2 = getDate(f2);
    return d1[1] > d2[1] || d1[1] === d2[1] && d1[0] > d2[0];
}

document.write(greater('Jan-2016', 'Jan-2015') + '<br>');
document.write(greater('Feb-2016', 'Jan-2016') + '<br>');
document.write(greater('Feb-2014', 'Jan-2016') + '<br>');

答案 2 :(得分:0)

您可以使用JavaScript Date对象来比较日期:

new Date("Jan-2016") > new Date("Jan-2015") //-> true

答案 3 :(得分:0)

理想情况下,您应该比较Date对象,但Date不能解析您使用的格式的字符串。

如果您将日期格式设置为&#34; 2015-01&#34;和&#34; 2016-01&#34;你可以使用Javascript的Date对象来比较它们。

如果需要,这可以让您继续将这些作为脚本中的实际日期表示使用。

注意:如果您将日期格式化为,ex,&#34; 201501&#34;和&#34; 201601&#34;你可以使用简单的大于或小于比较。

所以你需要:

  1. 将日期字符串拆分为月份和年份
  2. 将月份字符串转换为整数
  3. 创建一个新变量以包含格式化日期
  4. 比较格式化日期

答案 4 :(得分:0)

您可以使用JavaScript库moment.js

要获取日期对象,请使用

var date1= moment("Jan-2016","MMM-YYYY");

同样为第二个日期做,然后将它们比作date1 > date2

答案 5 :(得分:0)

如果您使用"YYYY-MM"一致的字符串格式,例如"2020-10""2021-01",您甚至不必为了准确比较就将它们转换为日期,只需直接比较字符串值,如果您只是想知道哪个月份是下个月。

尝试一下:

var d1 = "2020-12";
var d2 = "2021-01";

var greaterMth = d2 > d1 ? d2 : d1;

alert("Greater month is: " + greaterMth);

但是对于您而言,这将是:

var d1 = new Date("Jan-2016");
var d2 = new Date("Jan-2015");

greaterMth = d2 > d1 ? "Jan-2015" : "Jan-2016";
    
alert("Greater month is: " + greaterMth);

您甚至不必担心new Date()生成的每月的第一天