2012-11-23 2 views
6

Sì, un altro Java Data posta :)Errore di analisi String to Date in Java

Il mio problema:

semplice codice standard, utilizzato per la prova, se una data introdotto non e 'nella forma richiesta (dd/MM/aaaa):

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

    sdf.parse(strDate); 

} catch(ParseException e) { 

    // err 

} 

strDate = "2012/10/12" ----> sysout = err (ok)

strDate = "2012/11/10" ----> sysout = err (ok)

strDate = "15/10/2011" ----> sysout = parse (ok)

il problema:

strDate = "2012/12/15" ----> sysout = questa data che mi aspetto un errore risultato analizzato come "mar 3 giugno 00:00:00 CET 21"

Chissà ???

+2

Può chiarire qual è il problema? Non capisco bene la domanda. Sta fallendo l'analisi? –

+7

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

+0

@TheCat .. Analizza correttamente la stringa, che non deve essere analizzata. –

risposta

8

impostare setLenient su false.

DA API:

setLenient method:

Specificare se la data/ora di analisi è quello di essere indulgenti. Con l'analisi lenta di , il parser può utilizzare l'analisi euristica per interpretare gli input che non corrispondono esattamente al formato di questo oggetto. Con l'analisi rigorosa, gli input devono corrispondere al formato di questo oggetto.

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

Grande, molti tnx per chiarire le idee, è nel mio evernote ora :) –