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

回到顶部