首先,计算一年有多少天,可以直接取12月31号的DAY_OF_YEAR,没必要像你那样
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
另外,要看是不是闰年
分别取
int year=1100,month=1,date=29;
calendar.set(year, month, date);
System.out.println(calendar.get(Calendar.MONTH));
int year=1100,month=1,date=30;
calendar.set(year, month, date);
System.out.println(calendar.get(Calendar.MONTH));
看一下就知道了,很明显,2月29是2月的
2月30到了3月
lastDate.set(Calendar.DATE,1);//设为当前月的1号
lastDate.add(Calendar.MONTH,1);//加一个月
lastDate.add(Calendar.DATE,-1);//减去一天
用 set 去加减不对的 换算基数是不一样的 也可以加减年
看看