现在的位置: 首页 > 综合 > 正文

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

2018年04月28日 ⁄ 综合 ⁄ 共 420字 ⁄ 字号 评论关闭

项目中需要计算指定月份的上一个月,如传入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);计算上一个月

抱歉!评论已关闭.