javascript中的月-年比较

javascript中的月-年比较,javascript,Javascript,我有两个输入字段,在其中输入月份和年份。并以图形表示方式显示数据。 领域1:2016年1月 领域2:2015年1月 我必须比较和此字段,如果Field1>Field2,则必须显示警报消息 如何在java脚本中进行比较 输入类型格式为月-年您可以使用JavaScript日期对象来比较日期: 新日期(“2016年1月”)>新日期(“2015年1月”)/->true理想情况下,您应该比较日期对象,但日期不能解析所用格式的字符串 如果将日期格式化为“2015-01”和“2016-01”,则可以使用Jav

我有两个输入字段,在其中输入月份和年份。并以图形表示方式显示数据。 领域1:2016年1月 领域2:2015年1月

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

如何在java脚本中进行比较


输入类型格式为月-年

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


新日期(“2016年1月”)>新日期(“2015年1月”)/->true

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

如果将日期格式化为“2015-01”和“2016-01”,则可以使用Javascript的日期对象来比较它们

这样做的好处是,如果需要,您可以继续在脚本中使用这些作为实际日期表示

注意:如果将日期格式化为,例如,“201501”和“201601”,则可以使用简单的大于或小于比较

因此,您需要:

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

  • 您可以在代码中使用这个小示例

    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

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

    通过使用
    valueOf()


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

    功能更大(f1、f2){
    函数getDate(f){
    var d=f.分割('-');
    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()];
    返回d;
    }
    变量d1=获取日期(f1),
    d2=获取日期(f2);
    返回d1[1]>d2[1]| | d1[1]==d2[1]&&d1[0]>d2[0];
    }
    文件写入(较大('2016年1月'、'2015年1月')+'
    '; 文件写入(较大('2016年2月'、'2016年1月')+'

    文件书写(较大('2014年2月'、'2016年1月')+'
    您可以使用JavaScript库

    要获取日期对象,请使用

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

    类似地,对第二个日期执行此操作,然后将其作为
    date1>date2

    进行比较,如果您具有一致的字符串格式
    “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);
    

    您甚至不必担心由
    新日期()生成的月1日

    您可以共享可执行的演示/代码片段吗?您可以使用
    月数组的
    索引来比较月份
    。使用
    数字比较来比较年份
    可能的重复。您可以与示例共享该小提琴吗。我不能用这种格式。如果你这样做,你会得到“无效日期”,日期不能解析这种格式。
    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);