在使用calendar.getActualMaximum(calendar.DAY_OF_MONTH)获取每月最后一天时,发现在2月出现了问题,比如应该是0228,但是得到的是0331,研究很久没找到原因,后来看到clear方法,代表清空缓存,所以在想是不是缓存原因,因此在获取getInstance后,在使用实例的时候clear掉缓存就正常了。
附上代码:
time: YYYY-MM
int year = Integer.parseInt(time.split("-")[0]); int month = Integer.parseInt(time.split("-")[1]); Calendar cal = Calendar.getInstance(); cal.clear(); // 设置年份 cal.set(Calendar.YEAR, year); // 设置月份 cal.set(Calendar.MONTH, month-1); // 获取某月最大天数 int lastDay = cal.getActualMaximum(Calendar.DATE); // 设置日历中月份的最大天数 cal.set(Calendar.DAY_OF_MONTH, lastDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf 即结果。