如何在java中比较年月和日?

时间:2015-01-04 00:34:14

标签: java

我的申请表我想对“MyDate”课程进行排序,老师告诉我如何排序,但我怎样才能比较年份,然后是其他人呢?

    Comparator<MyDate > dateCompare = new Comparator<MyDate >() {

            @Override
            public int compare(MyDate o1, MyDate o2) {

                int dd1 = o1.getDateDay();
                int mm1 = o1.getDateMonth();
//////years to compare ???????????????????
                int years1 = o1.getYear();

                int dd2 = o2.getDateDay();
                int mm2 = o2.getDateMonth();
//////years to compare ?????????????????
                 int years2 = o2.getYear();

                if (mm1 > mm2) {
                    return 1;
                } else if (mm1 < mm2) {
                    return -1;
                } else { // ==

                    if (dd1 > dd2) {
                        return 1;
                    } else if (dd1 < dd2) {
                        return -1;
                    } else {
                        return 0;
                    }
                }
            }
        }; 


    Collections.sort(list,dateCompare); 

3 个答案:

答案 0 :(得分:0)

首先比较最重要的字段。使用Date year。 此外,自elseif条件else if起,不需要跟踪return。像

这样的东西
if (years1 > years2) {
  return 1;
} else if (years1 < years2) {
  return -1;
}
if (mm1 > mm2) {
  return 1;
} else if (mm1 < mm2) {
  return -1;
}
if (dd1 > dd2) {
  return 1;
} else if (dd1 < dd2) {
  return -1;
}
return 0;

答案 1 :(得分:0)

您可以使用before()对象的Date方法来比较日期,这样可以非常简单地为您的任务编写代码。当然,这意味着您必须将MyDate个对象转换为Date,但它应该非常简单。

答案 2 :(得分:0)

您可以使用GregorianCalendar类的内置功能在一行中执行此操作。

return new GregorianCalendar(years1, mm1 - 1, dd1).compareTo(new GregorianCalendar(years2, mm2 - 1, dd2));

请注意,月份参数中的- 1是必需的,因为GregorianCalendar构造函数使用011范围内的月份值。