JAva Calendar使用中の1つでエラーに気づきにくい

568 ワード

Calendarを使用して月の最大日数を取得すると、隠れたエラーが発生しました.
  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にも似たような問題があります