我有两个输入字段,我们在其中输入Month-year。并以图形表示显示数据。 字段1:扬-2016 字段2:扬-2015
我必须比较和此字段,如果Field1> Field2则必须显示警告消息。
如何在java脚本中进行比较
输入类型格式为月 -
答案 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;你可以使用简单的大于或小于比较。
所以你需要:
答案 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()
生成的每月的第一天。