2012-11-23 10 views
6

Tak, kolejny Java Data postu :)Błąd parsowania String do tej pory w Javie

Mój problem:

prosty kod standardowy, stosowany do badania, jeśli data jest włożona w formie żądanej (dd/mm/rrrr)

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
try { 

    sdf.parse(strDate); 

} catch(ParseException e) { 

    // err 

} 

strDate = "12.10.2012" ----> sysout = err (OK)

strDate = "10.11.2012" ----> sysout = err (ok)

strDate = "15/10/2011" ----> sysout = analizy składniowej (OK)

problem:

strDate = "15.12.2012" ----> sysout = data ta, że ​​oczekują błędzie wynik analizowany jak "Tue Jun 03 00:00:00 CET 21"

Kto wie ???

+2

Czy możesz wyjaśnić, na czym polega problem? Nie bardzo rozumiem pytanie. Czy przetwarzanie nie działa? –

+7

http://www.accordess.com/wpblog/techtip-use-of-setlenient-method-on-simpledateformat/ –

+0

@ TheCat .. Poprawnie analizuje łańcuch znaków, którego nie należy analizować. –

Odpowiedz

8

po prostu ustaw setLenient na false.

OD API:

setLenient method:

określić, czy data/czas parsowania ma być łagodny. W przypadku łagodnego analizowania parser może użyć heurystyki do interpretacji danych wejściowych , które nie są dokładnie dopasowane do formatu tego obiektu. Przy ścisłym analizowaniu wejścia muszą być zgodne z formatem tego obiektu.

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
try { 
    sdf.setLenient(false); 
    System.out.println(sdf.parse("2012/12/15")); 
} catch(ParseException e) { 
    e.printStackTrace(); 
} 
+0

Świetne, wiele tnx do usuwania pomysłów, jest w moim evernote teraz :) –