Java:自定义向当前日期添加1个月
我已经看过了,基本上我已经发现Calendar对象可以使用以下类似方法将1个月添加到指定的日期中:
Calendar cal = Calendar.getInstance();cal.add(Calendar.MONTH, 1);
尽管我不喜欢它在日期为30或31时的行为。如果我将1个月添加到01/31/2012,输出将变为02/29/2012。当我再增加1个月时,它将变为03/29/2012。
无论如何,我是否可以强制2012年2月29日自动变为2012年3月1日?
基本上这就是我想发生的事情:
默认日期:01/31/2012
添加1个月:2012年3月1日
再增加1个月:2012年3月31日
回答:
您需要的是一些隐式知识,即如果开始日期是该月的最后一天,并且您加上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() { ... }
封装操作。
以上是 Java:自定义向当前日期添加1个月 的全部内容, 来源链接: utcz.com/qa/422584.html