2013-05-02 10 views
5

Die API für parseLocalDate sagt, es wird UnsupportedOperationException "Wenn Analyse wird nicht unterstützt" werfen. Was bedeutet es, wenn 'Parsing' nicht unterstützt wird? Ich schaue durch die Quelle und kann nirgendwo finden, dass UnsupportedOperationException wirft. War jemand jemals in einem Szenario gewesen, in dem diese Ausnahme vom Aufruf parseLocalDate ausgelöst wurde?DateTimeFormatter.parseLocalDate löst UnsupportedOperationException

Antwort

5

DateTimeFormatter haben zwei Verwendungen:

  • Druckdaten;
  • Daten analysieren;

Beim Erstellen DateTimeFormatter instance, übergeben Sie es DateTimePrinter und DateTimeParser.

Wenn Ihr Formatierer nur Drucker, und Sie wollen Datum analysieren - UnsupportedOperationException geworfen werden.

Wenn Ihr Formatierer nur Parser, und Sie wollen Druck Datum - UnsupportedOperationException geworfen werden.

Beispiel

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 gut zu kennen, danke. Es sieht so aus, als ob 'org.joda.time.format.DateTimeFormat.forPattern (String)' immer einen 'DateTimeFormatter' mit einem Drucker und einem Parser zurückgibt; also sollte 'DateTimeFormatter', das über' forPattern' abgefragt wird, niemals 'UnsupportedOperationException' richtig werfen? – FGreg

+1

@FGreg ja, es ist wahr – Ilya

+2

Beachten Sie außerdem, dass es zwei ähnliche Instanzmethoden gibt: 'ISODateTimeFormat.dateTime()' und 'ISODateTimeFormat.dateTimeParser()'. Wenn Sie letzteres verwenden und versuchen, '.format (dateTime)' zu verwenden, erhalten Sie diese Ausnahme. – membersound

Verwandte Themen