Beim Parsen der Zeichenfolge zum lokalen Datum wird das gewünschte Jahrhundert nicht verwendet

8

Ich verwende dieses DateTimeFormatter:

%Vor%

Ich möchte die Zeichenfolge 150790 analysieren und habe diesen Fehler erhalten:

%Vor%

Offensichtlich möchte ich das folgende TemporalAccessor :

erhalten %Vor%

Weißt du, warum ich das Jahr 2090 statt 1990 bekommen habe?

Danke für Ihre Hilfe

    
Happy 07.04.2015, 11:49
quelle

1 Antwort

12

Da es sich bei dieser Frage wirklich um neue java.time -package und NOT SimpleDateFormat handelt, werde ich nach relevanter Abschnitt :

  

Jahr: Die Anzahl der Buchstaben bestimmt die minimale Feldbreite darunter   welches Padding verwendet wird. Wenn die Anzahl der Buchstaben zwei ist, dann reduziert   zweistellige Form wird verwendet. Zum Ausdrucken gibt dies die beiden rechten aus   Ziffern. Beim Parsen analysiert dies den Basiswert 2000,   Daraus ergibt sich ein Jahr im Bereich von 2000 bis einschließlich 2099.

Wir sehen, dass Java-8 standardmäßig den Bereich 2000-2099 verwendet, nicht wie SimpleDateFormat den Bereich -80 Jahre bis +20 Jahre im Vergleich zu heute.

Wenn Sie es konfigurieren möchten, müssen Sie appendValueReduced () . Dies ist in einer unbequemen Weise gestaltet, aber möglich, siehe hier:

%Vor%

Übrigens, wenn Sie wirklich wochenbasierte Jahre wollen, dann müssen Sie Y anstelle von y oder das entsprechende Feld IsoFields.WEEK_BASED_YEAR verwenden. In Anbetracht der Tatsache, dass Sie keine anderen Wochen bezogenen Felder haben, würde ich das normale Kalenderjahr, nicht das Wochenbasierte, annehmen.

    
Meno Hochschild 07.04.2015, 16:10
quelle

Tags und Links