0

嗨,我的 JS 代码中有以下 if then 语句。

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

它似乎适用于 2013 年 10 月的日期和所有 1 月的日期(无论年份)。

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

它在其他月份无法正常工作。例如二月、三月、四月等,它显示“最大百分比”。

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

4

2 回答 2

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 + '%';    
}

这样,您将比较两个日期对象而不是两个字符串对象。

于 2013-10-25T16:48:35.887 回答
1

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

如果DATE是一个Date实例,您可以这样做:

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

...这将从 10 月 21 日午夜开始为真(月份值以 0 = 一月开始,因此 9 = 十月)。请注意,我是>=在 21 日而不是 20 日完成的,因为我假设如果您正在寻找某些东西> '10/20/2013',您的意思是 21 日或更晚(而不是“20 日午夜之后的任何时间”)。

于 2013-10-25T16:45:52.240 回答