2013-04-04 118 views
2

我有變量nowDate類型的Date,我想設置變量nextDate包含下個月的最後一天。java得到下個月的最後一天

例如: nowDate = 2013年4月16日

所以nextDate將包含2013年5月31日

我怎麼能這樣做?

回答

4

計劃嘗試

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); 
3

你可以嘗試設置Calendar一個未來2個月天,然後。減去一個一天:

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

正如其他人已經指出的那樣,你也可以只加1個月,使用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(); 
+0

爲什麼2添加到一個月?爲什麼設置1個月中的某一天? – faszynski 2013-04-04 09:25:51

+0

這樣做的原因是爲了能夠減少一天,並得到你想要的日期。 '日曆'將處理月份日期,閏年等方面的差異。 – 2013-04-04 09:43:26

1

使用joda和惡癖關閉sinarf

DateTime dt = new DateTime().plusMonths(1); 
DateTime lastJoda = dt.dayOfMonth().withMaximumValue(); 
Date last = lastJoda.toDate(); 
System.out.println(last.toString()); 
6

哈維相似,但是一個較少的代碼行:-)

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.MONTH, 1); 
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); 
0

您可以執行以下操作來獲得的最後一天月

Calendar calendar = Calendar.getInstance(); 
calendar.setTime(date); 
calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 
+1

-1:OP要計算下個月的最後一天,而不是當前月份的最後一天。 – 2013-04-04 10:10:00

1

一種方法是將2個月增加到當前月份並將日期設置爲1。之後,將日期減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()); 

    } 
} 
+0

哈維已經在上面發佈了相同的答案...哎呀,我遲到了.. – Joe2013 2013-04-04 09:29:15

0

使用Calendar

首先設置日曆到下個月。 用途: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); 

    } 
} 

IDEONE DEMO

0

我們有這麼多好的答案,但是,所有這些答案,有這樣的代碼:

cal.add(Calendar.MONTH, 1); 

這個代碼產生了一點混亂,因爲個月從0開始,所以1是二月份。

(編輯:在add()函數整數不是該月號(1 =月),但月數增加)

相關問題