日期比较未按预期工作

时间:2013-10-25 16:43:00

标签: javascript html

嗨我在JS代码中有以下if语句。

    if (attributes.DATE > '10/20/2013'){
        html += '<b>Maximum percentage:</b> ' + aPerc + '%';
    }
    else {
        html += '<b>Percentage:</b> ' + aPerc + '%';    
    }

2013年10月的日期以及所有1月份的日期(无论年份)似乎都正常。

过去十年,它将显示10月1日至19日的“最大百分比:”和10月20日至31日的“百分比”。

其他月份无效。例如。 2月,3月,4月等显示“最大百分比”。

我猜它与我的日期格式有关?谢谢。

2 个答案:

答案 0 :(得分:4)

我会这样做:

var date1 = new Date(attributes.DATE);
var date2 = new Date('10/20/2013');

if (date1 > date2){
    html += '<b>Maximum percentage:</b> ' + aPerc + '%';
}
else {
    html += '<b>Percentage:</b> ' + aPerc + '%';    
}

这样,您将比较两个 date 对象,而不是两个 string 对象。

答案 1 :(得分:1)

您正在进行字符串比较,但字符串中字段的顺序不会为您提供日期顺序比较。 (如果两个字符串都在yyyy/MM/dd顺序中,你会得到一个......)

如果DATEDate个实例,您可以这样做:

if (attributes.DATE >= new Date(2013, 9, 21)){

...从10月21日午夜开始(月份值从0 = 1月开始,因此9 = 10月)。注意我做了>=和21而不是20,因为我假设你正在寻找> '10/20/2013',你的意思是21或更晚(而不是意味着“午夜之后的任何时间)第20个“)。