calendar设置月份容易忽视的问题

来源:互联网 发布:js math 向上取整 编辑:程序博客网 时间:2024/06/10 00:13

项目中需要计算指定月份的上一个月,如传入3月,则上一个月为2月,很简单

我先获取calendar对象,然后执行canlendar.add(Calenday.MONTH,-1); 但发现执行的结果不对

写了一段测试代码:

for (int i = 0 ; i < 12 ;i++) {
     Calendar calendar = Calendar.getInstance(Locale.CHINA);
     calendar.set(Calendar.MONTH, i);
     System.out.print(calendar.get(Calendar.MONTH) +",");
}

打印结果
0,2,2,4,4,6,6,7,9,9,11,11

出现如上结果的原因是:

有些月份只有28、29或30天,而当你在31号执行上段代码时,如果上一个月只有28、29或30天,就会出现我这个问题

所以不能简单的根据canlendar.add(Calenday.MONTH,-1);计算上一个月

原创粉丝点击