我有变量 nowDate 类型的日期,我想设置变量 nextDate 包含下个月的最后一天。
例如:nowDate = 2013-04-16
所以 nextDate 将包含 2013-05-31
我怎样才能做到这一点?
我有变量 nowDate 类型的日期,我想设置变量 nextDate 包含下个月的最后一天。
例如:nowDate = 2013-04-16
所以 nextDate 将包含 2013-05-31
我怎样才能做到这一点?
类似于 Xavi,但少了一行代码 :-)
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
尝试
private static Date getNextDate(Date nowDate) {
Calendar c = Calendar.getInstance();
c.setTime(nowDate);
c.add(Calendar.MONTH, 1);
c.set(Calendar.DATE, c.getMaximum(Calendar.DATE));
Date nextDate = c.getTime();
return nextDate;
}
用法:
Date nowDate = new Date();
Date nextDate = getNextDate(nowDate);
您可以尝试Calendar
提前两个月设置第一天,然后减去一天:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 2);
c.set(Calendar.DAY_OF_MONTH, 1);
c.add(Calendar.DATE, -1);
Date nextDate = c.getTime();
正如其他人已经指出的那样,您也可以只添加一个月,并用于Calendar.getActualMaximum()
设置下个月的最后一天。
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextDate = c.getTime();
一种方法是将 2 个月增加到您当前的月份并将日期设置为 1st。之后将日期减 1,它将为您提供月份的最后一天。这将自动处理闰年、30 天、31 天、29 天和 28 天的月份。下面的程序
public class LastDayofNextMonth {
public static void main(String args[])
{
Calendar cal = Calendar.getInstance();
cal.set(2013,Calendar.APRIL, 14) ;
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+2);
cal.set(Calendar.DATE,1);
cal.add(Calendar.DATE,-1);
System.out.println(cal.getTime().toString());
}
}
使用日历:
首先将日历设置为下个月。采用:cal.add(Calendar.MONTH, 1);
然后使用getActualMaximum计算您在上一步中设置的月份的最后一天。
import java.util.Calendar;
import java.util.Date;
public class Main{
public static void main(String ar[]){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));
cal.add(Calendar.MONTH, 1);
Date lastDateOfNextMonth = cal.getTime();
System.out.println(lastDateOfNextMonth );
}
}
我们有很多很好的答案,但是以上所有答案都有如下代码:
cal.add(Calendar.MONTH, 1);
这段代码会产生一些混乱,因为月份从 0 开始,所以 1 代表二月。
(编辑: add() 函数中的整数不是月份数(1=二月)而是要添加的月份数)
您可以执行以下操作来获取本月的最后一天
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.getActualMaximum(Calendar.DAY_OF_MONTH);