Wie kann DateFormat das geplante Jahrhundert raten?

8

Ich versuche ein String im "dd-MM-yy" Format zu einem Date Objekt zu analysieren. Das Problem ist, dass es versucht, das Jahrhundert für das Datum zu erraten.

Wenn das Jahr von 01 bis 31 angegeben wird, wird das Jahr als 2000 (21. Jahrhundert) interpretiert, und 32 bis 99 wird als 20. Jahrhundert betrachtet.

%Vor%

Kann mir jemand helfen? Wie kann ich präzisieren, dass ich nur im 21. Jahrhundert sauber arbeite? Ich versuche nicht gerade, nach Tricks zu suchen, wie die Saite zu manipulieren oder das Datum basierend auf der Bedingung zu verschieben.

    
Edge 24.05.2012, 06:31
quelle

2 Antworten

12

Sie können das verwendete Jahrhundert ändern, um eine zweistellige Dateneingabe mit dem set2DigitYearStart() Methode.

%Vor%

Wird am 17. März 2040 gedruckt.

    
Affe 24.05.2012, 06:44
quelle
6

Aus der Dokumentation :

  

Zum Analysieren mit dem abgekürzten Jahrmuster ("y" oder "yy") muss SimpleDateFormat das abgekürzte Jahr relativ zu einem Jahrhundert interpretieren. Dazu werden Daten so angepasst, dass sie innerhalb von 80 Jahren vor und 20 Jahre nach der Erstellung der SimpleDateFormat-Instanz liegen. Wenn Sie beispielsweise ein Muster aus "MM / TT / JJ" und eine SimpleDateFormat-Instanz verwenden, die am 1. Januar 1997 erstellt wurde, wird die Zeichenfolge "01/11/12" als Jan 11, 2012 interpretiert, während die Zeichenfolge "05/04 / 64 "würde als 4. Mai 1964 interpretiert werden. Während des Parsens werden nur Strings, die aus genau zwei Ziffern bestehen, wie von Character.isDigit (char) definiert, in das Standardjahrhundert geparst. Jede andere numerische Zeichenfolge, z. B. eine Zeichenfolge mit einer Ziffer, eine Zeichenfolge mit drei oder mehr Ziffern oder eine zweistellige Zeichenfolge, bei der es sich nicht um Ziffern handelt (z. B. "-1"), wird wörtlich interpretiert. So werden "01/02/3" oder "01/02/003" unter Verwendung des gleichen Musters wie am 2. Januar 3 AD analysiert. Ebenso wird "01/02 / -3" als 2. Januar 4 v. Chr. Analysiert.

Es scheint keine Möglichkeit zu geben, den [-80; +20] -Bereich anzupassen. Ich vermute, Ihre beste Wette ist es, das zweistellige Jahr in das vierstellige Format zu erweitern:

%Vor%     
NPE 24.05.2012 06:33
quelle

Tags und Links