jn1*_*1kk 0 java time calendar date
我有一个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());
}
Run Code Online (Sandbox Code Playgroud)
为什么同一日期的两个Calendar对象中存在缺陷?(1325413927678 vs 1325413927679)
谢谢!
仅供参考:此方法有效一段时间,然后在某一点停止工作.
PS - 我明白这是矫枉过正,我可以有一个更简单的比较,但请幽默我.
EDIT-FIX
使用JodaTime的LocalDate.
或者这样做:
Calendar cal1 = Calendar.getInstance();
cal1.setTimeZone(TimeZone.getTimeZone("UTC"));
cal1.clear();
cal1.set(year, month, 1); // year is 2012, month is 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |