您需要的是一些隐式知识,即如果开始日期是该月的最后一天,并且您加上1个月,则结果应该是下个月的最后一天。即属性“月的最后一天”应该是粘性的。
这在Java中不是直接可用的
Calendar,但是一种可能的解决方案是
Calendar.getActualMaximum(Calendar.DAY_OF_MONTH)在增加月份之后使用重置日期。
Calendar cal = ...;cal.add(Calendar.MONTH,1);cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DAY_OF_MONTH));
您甚至可以子类化
GregorianCalendar并添加一个方法
public Calendar endOfNextMonth() { ... }封装操作。



