我有一个 TreeMap <DDate, Integer>
。
DDate 只包含月份和年份(月份为 0 索引,如在 Java 中,JAN = 0);
我的比较没有返回正确的东西:
@Override
public int compareTo(DDDate o) {
Calendar cal1 = Calendar.getInstance();
cal1.setTimeZone(TimeZone.getTimeZone("UTC"));
cal1.set(year, month, 1); // year is 2012, month is 1
Calendar cal2 = Calendar.getInstance();
cal2.setTimeZone(TimeZone.getTimeZone("UTC"));
cal2.set(o.getYear(), o.getMonth(), 1); // year is 2012, month is 1
Log.log("COMPARING: " + format.format(cal1.getTime())); // COMPARING: 20120101
Log.log("COMPARING: " + format.format(cal2.getTime())); // COMPARING: 20120101
Log.log((cal1.getTime().getTime())); // 1325413927678
Log.log((cal2.getTime().getTime())); // 1325413927679
Log.log("WILL RETURN: " + cal1.getTime().compareTo(cal2.getTime())); // WILL RETURN: -1
return cal1.getTime().compareTo(cal2.getTime());
}
为什么同一日期的两个日历对象存在差异?(1325413927678 与 1325413927679)
谢谢!
仅供参考:此方法工作一段时间,然后在某个点停止工作。
PS - 我知道这是矫枉过正,我可以有一个更简单的 compareTo,但请幽默。
编辑-修复
使用 JodaTime 的 LocalDate。
或者这样做:
Calendar cal1 = Calendar.getInstance();
cal1.setTimeZone(TimeZone.getTimeZone("UTC"));
cal1.clear();
cal1.set(year, month, 1); // year is 2012, month is 1