2013-05-02 18 views
5

L'API per parseLocalDate dice che genererà UnsupportedOperationException "se l'analisi non è supportata". Che cosa significa "se l'analisi non è supportata"? Sto guardando attraverso la fonte e non riesco a trovare da nessuna parte che getta UnsupportedOperationException. Qualcuno è mai stato in uno scenario in cui è stata generata questa eccezione dal chiamare parseLocalDate?DateTimeFormatter.parseLocalDate genera UnsupportedOperationException

risposta

5

DateTimeFormatter hanno due usi:

  • date di stampa;
  • date di parsing;

Quando si crea DateTimeFormatter instance, si passa ad esso DateTimePrinter e DateTimeParser.

Se il formattatore ha solo stampante, e si desidera analizzare data - saranno gettati UnsupportedOperationException.

Se il formattatore ha solo parser, e si desidera stampa data - saranno gettati UnsupportedOperationException.

Esempio

DateTimeFormatter formatter = new DateTimeFormatter(new DateTimePrinter() 
    { 
    // implements all abstract methods   
    }, null); // this instance has printer and hasn't parser 
    formatter.print(new DateTime()); // works well 
    formatter.parseDateTime("datetimestring"); // throws exeption 
+0

Ah bene sapere, grazie. Sembra che 'org.joda.time.format.DateTimeFormat.forPattern (String)' restituirà sempre un 'DateTimeFormatter' con una stampante e un parser; quindi un 'DateTimeFormatter' recuperato tramite' forPattern' non dovrebbe mai gettare 'UnsupportedOperationException' corretto? – FGreg

+1

@FGreg sì, è vero – Ilya

+2

Inoltre, si noti che esistono due metodi di istanza simili: 'ISODateTimeFormat.dateTime()' e 'ISODateTimeFormat.dateTimeParser()'. Se hai usato quest'ultimo e provi per '.format (dateTime)', ottieni questa eccezione. – membersound

Problemi correlati