Java:自定义将1个月添加到当前日期
我读过很多书,基本上我已经知道Calendar对象可以在指定的日期上加1个月,比如:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
尽管我不喜欢它在30号或31号的时候的行为。如果我在2012年1月31日之前加上1个月,输出将变为2012年2月29日。当我再加上一个月,它就变成了2012年3月29日
我是否可以强制2012年2月29日自动变为2012年3月1日
基本上这就是我想要发生的事情:
默认日期:2012年1月31日
添加1个月:2012年1月3日
新增1个月:2012年3月31日
# 1 楼答案
你想要的是一些隐含的知识,如果开始日期是一个月的最后一天,加上一个月,结果应该是下个月的最后一天。也就是说,房产“月的最后一天”应该是粘性的
这在Java的
Calendar
中不直接可用,但一种可能的解决方案是使用Calendar.getActualMaximum(Calendar.DAY_OF_MONTH)
重置月递增后的第二天您甚至可以将
GregorianCalendar
子类化并添加一个方法来封装操作
# 2 楼答案
加上30天,你可以这样做:
如果days=30,它将返回添加了30天的日期
# 3 楼答案
如果下个月的日期小于前一个月的日期,则看起来您希望日历滚动到下个月初。下面是我们如何做到这一点: