calendar.getActualMaximum(calendar.DAY_OF_MONTH)的陷阱

来源:互联网 发布:行知实践园观后感400 编辑:程序博客网 时间:2024/06/04 19:59
在使用calendar.getActualMaximum(calendar.DAY_OF_MONTH)获取每月最后一天时,发现在2月出现了问题,获取到的时间是20170303,而其他月份获取的最后一天都是正确的。
而且之前获取2月最后一天是28号,也每月问题。代码也没动过。后来才发现昨天是28号取的2月最后一天,29-31号取2月最后一天都会有问题。
原因是Calendar类在set的时候,并不会立即生效,只有在get的时候才会生效

解决方法是在实例化Calendar类之后,要先调用clear()方法清空缓存。

Calendar calendar=Calendar.getInstance();calendar.clear();calendar.set(Calendar.YEAR, 2017);calendar.set(Calendar.MONTH, 1);int firstDay=calendar.getActualMinimum(calendar.DAY_OF_MONTH);int lastDay=calendar.getActualMaximum(calendar.DAY_OF_MONTH);System.out.println(2+"月第一天是:"+firstDay);System.out.println(2+"月最后一天是:"+lastDay);calendar.set(Calendar.DAY_OF_MONTH, lastDay);SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");System.out.println(sdf.format(calendar.getTime()));


原创粉丝点击