当前位置:   article > 正文

calendar.getActualMaximum(calendar.DAY_OF_MONTH)的陷阱_getactualmaximum为什么多一天‘

getactualmaximum为什么多一天‘
在使用calendar.getActualMaximum(calendar.DAY_OF_MONTH)获取每月最后一天时,发现在2月出现了问题,获取到的时间是20170303,而其他月份获取的最后一天都是正确的。
而且之前获取2月最后一天是28号,也每月问题。代码也没动过。后来才发现昨天是28号取的2月最后一天,29-31号取2月最后一天都会有问题。
原因是Calendar类在set的时候,并不会立即生效,只有在get的时候才会生效

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

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


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/549243
推荐阅读
  

闽ICP备14008679号