2011-07-13 10 views
6

mam randkę String newDate = "31.05.2001"Przyrost Data String przez 1 dzień

które muszę zwiększyć o 1 dzień.

Próbowałem następujący kod:

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

Ale z tego kodu, to jest zarządzanie tylko dodać wyjście DZIEŃ tj od 31.05.2001 będzie 05.01.2001 utrzymując miesiąc i rok bez zmian! Pomóż mi z tym.

Próbowałem zostały również

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

Błąd, 'Calendar.add()' powinien działać. Czy jesteś pewien swoich wejść i wyjść? – Henning

+2

Dlatego smyczki nie są dobrym zlewem kuchennym –

+0

Próbowałem kodu - zachowuje się jak opisano ... Dziwne ?! –

Odpowiedz

12

Należy użyć new SimpleDateFormat("dd.MM.yyyy");

'mm' oznacza minuty, 'MM' jest miesiąc.

+1

+1 Ah! Oczywiście. Dobre znalezisko. – Henning

+0

Też to wymyśliłem !! wielkie dzięki, Fortega! :) – Alpesh003

2

Twój błąd jest w formacie daty. Powinieneś użyć MM (miesiąc) zamiast mm (minuty).

Zmień SimpleDateFormat sdf = new SimpleDateFormat("dd.mm.yyyy"); na SimpleDateFormat sdf = new SimpleDateFormat ("dd.MM.rrrr");

i ciesz się.

2

wypróbuj to!

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

Byłoby prościej, aby uczynić go java Date obiektu i użyj DateUtils z Apache na nim dla różnych operacji. Sprawdź to http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/time/DateUtils.html. Jest to przydatne, szczególnie gdy musisz użyć go w wielu miejscach w swoim projekcie i nie chcesz pisać za każdym razem absurdalnej liczby wierszy.

API mówi:

addDays (data data, int ilość): Dodaje liczby dni do daty powracającego nowy obiekt.

Zwróć uwagę, że zwraca on nowy obiekt Date i nie wprowadza zmian w samym poprzednim.