我正在尝试按日期和时间对对象进行排序 - >例如,如果日期和时间是: 24/04/2015 14:00 & 24/04/2015 09:00 & 25/04/2015 15:00 顺序应为:
在我的情况下,订单是这样的:
按日期排序,但忽略时间。
代码
Collections.sort(myObjects, new Comparator<MyObject>(){
@Override
public int compare(MyObject object1, MyObject object2) {
return object1.getDate().compareTo(object2.getDate());
}
});
myObject类的P.S。 getDate()方法是一个常规的getter,只返回一个java.util.Date对象。
我错过了什么吗?
更新
日期来自MySQL DB,数据类型为DATE,因此它丢失了确切的时间,并且在排序期间忽略了TIME。这也是我无法重现问题的原因,因为我总是考虑时间手动设置Date对象。
答案 0 :(得分:2)
我尝试正确使用代码及其排序。也许您可以比较并找出您填写日期对象的方式是否有任何问题
public class DateSorter {
public static void main(String[] args) {
List<MyObject> myObjects = new ArrayList<MyObject>();
Calendar cal = new GregorianCalendar();
cal.set(2015, 4, 24, 14, 00);
Date dt1 = cal.getTime();
cal = new GregorianCalendar();
cal.set(2015, 4, 24, 9, 00);
Date dt2 = cal.getTime();
cal = new GregorianCalendar();
cal.set(2015, 4, 25, 15, 00);
Date dt3 = cal.getTime();
myObjects.add(new MyObject("1", dt1));
myObjects.add(new MyObject("2", dt2));
myObjects.add(new MyObject("3", dt3));
Collections.sort(myObjects, new Comparator<MyObject>() {
@Override
public int compare(MyObject object1, MyObject object2) {
return (int) (object1.getDate().compareTo(object2.getDate()));
}
});
System.out.println(myObjects.get(0));
System.out.println(myObjects.get(1));
System.out.println(myObjects.get(2));
}
}
答案 1 :(得分:0)
尝试比较日期的毫秒值。 (getTime()方法)。