JAva Calendar使用中の1つでエラーに気づきにくい
568 ワード
Calendarを使用して月の最大日数を取得すると、隠れたエラーが発生しました.
少なくなった c.set(Calendar.DATE, 1); //この行を少なくしてはいけません.コードを実行する日付が30日か31日であれば、31.ユニットテストを返すときに発見しにくく、問題は非常に隠れています.注意してください.同じように、DAY_OF_WEEK,HOUR_OF_DAYにも似たような問題があります
public static int getLastDayOfMonth(int year, int month) {
Calendar c = GregorianCalendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1); // JAN. is 0
c.set(Calendar.DATE, 1); //
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
}
少なくなった c.set(Calendar.DATE, 1); //この行を少なくしてはいけません.コードを実行する日付が30日か31日であれば、31.ユニットテストを返すときに発見しにくく、問題は非常に隠れています.注意してください.同じように、DAY_OF_WEEK,HOUR_OF_DAYにも似たような問題があります