java Calendar 使用中的一个不容易察觉异常
java Calendar 使用中的一个不容易察觉错误
使用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 也有类似问题