2011-07-13 135 views
6

我有個約會String newDate = "31.05.2001"1天遞增日期字符串

我必須增加1天。

我嘗試下面的代碼:

String dateToIncr = "31.12.2001"; 
String dt=""; 
SimpleDateFormat sdf = new SimpleDateFormat("dd.mm.yyyy"); 
Calendar c = Calendar.getInstance(); 
try { 
    c.setTime(sdf.parse(dateToIncr)); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
c.add(Calendar.DAY_OF_MONTH, 1); // number of days to add 
dt = sdf.format(c.getTime()); 
System.out.println("final date now : " + dt); 

但有了這個代碼,它只是設法增加2001年5月31日的第一天即輸出將是2001年1月5日保持月份和年份不變!請幫我解決一下這個。

我也試過

c.roll(Calendar.DATE, 1); // number of days to add 
+0

Err,'Calendar.add()'應該工作。你確定你的投入和產出嗎? – Henning

+2

這就是爲什麼字符串不好廚房水槽 –

+0

我試過的代碼 - 它的行爲如上所述... Wierd?! –

回答

12

您應該使用new SimpleDateFormat("dd.MM.yyyy");

'毫米' 是指分鐘, 'MM' 是月。

+1

+1啊!明顯。很好的發現。 – Henning

+0

我想出來了!非常感謝Fortega! :) – Alpesh003

2

您的錯誤是日期格式。您應該使用MM(月)而不是mm(分鐘)。

SimpleDateFormat sdf = new SimpleDateFormat("dd.mm.yyyy");更改爲SimpleDateFormat sdf = new SimpleDateFormat(「dd.MM.yyyy」);

並享受。

2

試試這個!!!!

String DATE_FORMAT = "dd-MM-yyyy"; 
    String date_string = "20-12-2001"; 
    java.text.SimpleDateFormat sdf = 
    new java.text.SimpleDateFormat(DATE_FORMAT); 
    Date date = (Date)sdf.parse(date_string); 
    Calendar c1 = Calendar.getInstance(); 
    c1.setTime(date); 
    System.out.println("Date is : " + sdf.format(c1.getTime())); 
    c1.add(Calendar.MONTH,1); 
    System.out.println("Date + 1 month is : " + sdf.format(c1.getTime())); 
3

這將是簡單的,你把它做成一個java Date對象,並對其使用DateUtils來自Apache的進行各種操作。檢查這個http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/time/DateUtils.html。當你不得不在你的項目中使用它多個地方,並且不希望每次都寫出荒謬的行數時,它非常方便。

的API說:

addDays(日期日期,INT量):增加的天數爲日期返回一個新的對象。

請注意,它會返回一個新的Date對象,並且不會更改前一個對象本身。