判断日期大小的问题,为何要10字?

请问大哥们,为什么我的第一段不能判断日子大小?ps注释的那段是正确的

public int compare(Date d) {

    if(year > d.year) {
        return 1;
    }else if(month > d.month) {
        return 1;
    }else if(day > d.day){
        return 1;
    }else if(day == d.day) {
        return 0;
    }else {
        return -1;
    }
}

/*
public int compare(Date date) {
return year > date.year ? 1
       : year < date.year ? -1
       : month > date.month ? 1
       : month < date.month ? -1
       : day > date.day ? 1
       : day < date.day ? -1 : 0;
}
*/

很简单,如果你拿一个2016-9和2017-5的对比,第一个if没进去,第二个进去了,返回1,那么问题来了2016-9比2017-5的日期大吗?

只有当前置判断是“==”你才可以进行下一层判断,你只判断了“>”情况,还有“<”情况未判断

如果单纯的比较用year.getTime();转换为毫秒之后再减,就简单了