の TreeMap があり<DDate, Integer>
ます。
DDate には月と年のみが含まれます (Java のように、月は 0 でインデックス化され、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());
}
同じ Date に対して 2 つの Calendar オブジェクトに不一致があるのはなぜですか? (1325413927678 対 1325413927679)
ありがとうございました!
参考までに、この方法はしばらくの間機能しますが、ある時点で機能しなくなります。
PS - 私はこれがやり過ぎであることを理解しています。
編集 - 修正
JodaTime の LocalDate を使用します。
または、次のようにします。
Calendar cal1 = Calendar.getInstance();
cal1.setTimeZone(TimeZone.getTimeZone("UTC"));
cal1.clear();
cal1.set(year, month, 1); // year is 2012, month is 1