2014-09-26 78 views
0

如何將特定的月數添加到存儲在數據庫中的日期。將個月添加到特定的java.sql.Date日期

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; 
} 
+0

你是什麼意思「無長型參數」? – 2014-09-26 12:58:57

回答

1

例如,你可以通過加1月份:

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

只要投你的變量(我假設月數)爲int。

我推薦使用不同的時間庫,例如joda's。你可以做這樣的事情在喬達庫:

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

如果你在一年的週末結束,那麼這種方法不會奏效。這正是「添加」的意思。 – 2014-09-26 12:59:25

+0

我同意,因爲錯誤。 – Tomek 2014-09-26 13:11:11

0

首先一個側面說明 - 此代碼也將努力在「getStartDate」方法返回一個新日期:

return new Date(); 

要回答你的問題:

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

其中「x」表示要添加的月數。

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(); 
}