将月份添加到特定的java.sql.Date日期

时间:2014-09-26 12:54:49

标签: java

如何将特定月数添加到存储在数据库中的日期。

private Date getStartDate(){
        return new Date(Calendar.getInstance().getTimeInMillis());
}

private Date getEndDate(){
    startDate = userSubscription.getSubscriptionStartDate();
    Date endDate;
    Calendar calendar = Calendar.getInstance();
    //Now I am having trouble cause in add() method of calendar there is no long type parameter
    return endDate;
}

3 个答案:

答案 0 :(得分:1)

例如,您可以按以下方式添加1个月:

calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH)+1);

简单地将您的变量(我假设的月数)转换为int。

我建议使用不同的时间库,例如joda。您可以在joda库中执行类似的操作:

Date date = new Date();
DateTime dateTime = new DateTime(date);
dateTime.plusMonths(1);
return dateTime.toDate();

答案 1 :(得分:0)

首先是旁注 - 此代码也可用于在" getStartDate"中返回新日期。方法:

return new Date();

回答你的问题:

calendar.add(Calendar.MONTH, x);
endDate = calendar.getTime();

在哪里' x'表示要添加的月数。

答案 2 :(得分:0)

为了避免一年中的最后一天或一年中的最后一个月,您可以使用GregorianCalendar#roll(..)。一种重写代码的可能方法:

private Date getEndDate(){
    //...
    Calendar calendar = GregorianCalendar.getInstance();
    //Now I am having trouble cause in add() method of calendar there is no long type parameter
    c.setTime(userSubscription.getSubscriptionStartDate());
    c.roll(Calendar.MONTH, 1);
    return c.getTime();
}