Java 1.7のGregorianCalenderに問題があります。私はJava 8への移行を知っているか、またはJodaを使用して問題を解決できるかもしれませんが、残念ながらこれはオプションではありません。Java 1.7 GregorianCalendarが間違った日付を計算する
私は終了日を計算するために365日を追加しようとしています(365日を追加するのはばかばかしいかもしれませんが、1年追加するだけではありませんがクライアントが要求したものです。彼はうるう年を無視したいので)。
一般的にはすべてうまくいきますが、次の単体テストでは彼と私の期待には合致しません。私は数回それを再計算し、私の結果を確認するために様々なツールを使用したが、私はちょうどjavaの計算を確認することはできません。
@Test
public void test(){
// Get a Gregorian Calendar
Calendar cal = GregorianCalendar.getInstance();
// Remove whatever was stored previously
cal.clear();
// Set calendar to 2004-10-23
cal.set(2004, Calendar.OCTOBER, 23);
// Add 365 days
cal.add(Calendar.DAY_OF_YEAR, 365);
// Calendar should be at 2005-10-22 now
Assert.assertEquals(2005, cal.get(Calendar.YEAR));
Assert.assertEquals(Calendar.OCTOBER, cal.get(Calendar.MONTH));
Assert.assertEquals(22, cal.get(Calendar.DAY_OF_MONTH));
}
それはで失敗します:
java.lang.AssertionError: expected:<22> but was:<23>
私が何か間違ったことをやっている、それは間違った日付を返しますので、ここで
は、失敗します私のユニットテストですか?