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