2012-01-24 9 views
6

muszę analizować ciąg, który nie zostały pierwotnie ustawiony rok jak „13 sierpnia 11:30”Domyślnie Data lat zestaw w 1970

ale kiedy wyjście data dodaje roku na I, próbowano ustawić rok, ale rok jest całkowicie błędny wynik przychodzi jako "Thu 13 sierpnia 11:30:00 GMT 3911"

Czy istnieje sposób, aby ustawić rok po dacie jest analizowany?

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM HH:mm"); 

String dateStr = "13 Aug 11:30"; 
Date fromDate = (Date)formatter.parse(dateStr); 


fromDate.setYear(2011); 
+0

tytuł nie opisuje kwestię się wydaje? –

+0

Dlaczego nie dodać roku do ciągu, zanim go zanalizujesz? –

+0

@Martin Ponieważ parsuję datę z tagu html i nie ma ona roku –

Odpowiedz

11

Zastosowanie Calendar aby ustawić rok:

Calendar c = Calendar.getInstance(); 
c.setTime(fromDate); 
c.set(Calendar.YEAR, 2011); 
fromDate = c.getTime(); 
+1

+1 za korzystanie z niezastosowanego sposobu ustawiania roku. – Dev

3

Czy czytałeś API dla metody setYear?

Ustawia roku tego obiektu Date być określona wartość Plus 1900

2011 + 1900 = 3911

3

Dokumentacja java.util.Date stanach dość wyraźnie, że setYear() dodaje 1900 do roku przeszedł in. Wystarczy odjąć 1900 od argumentu.

+0

Uwaga na lata przestępne: rok 1900 nie był rokiem przestępnym, ale rok 2000 był. Zgadzam się z Twoją uwagą na temat dodawania roku do ciągu; to wydaje mi się najprostsze. – MRAB