Ich versuche ein String
im "TT-MM-JJ" -Format zu einem Date
Objekt zu analysieren. Das Problem ist, dass es versucht, das Jahrhundert für das Datum zu erraten.Wie kann DateFormat das geplante Jahrhundert erraten?
Wenn von 01 bis 31 angegeben, wird das Jahr als 2000er (21. Jahrhundert) interpretiert und 32 bis 99 gilt als 1900s (20. Jahrhundert).
SimpleDateFormat fm =new SimpleDateFormat("dd-MM-yy");
String datestr="21-11-31";
try {
Date date= fm.parse(datestr);
System.out.println(date);
} catch (ParseException e) {
}
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.
Ich glaube, dass, wenn Sie alle wollen angeben, dass die Daten im 21. Jahrhundert sind, sind Sie tatsächlich wahrscheinlich besser eine dumme String-Manipulation zu tun. 's/([0-9] {2} - [0-9] {2}) - ([0-9] {2})/$ 1-20 $ 2 /'. – zebediah49
Ich bin gespannt, warum die Eingabe im Kurzjahresformat ist. Können Sie die Eingabe im Long-Year-Format erhalten? Eine andere Möglichkeit ist das Hinzufügen von "20" in dem Jahrfeld unter Verwendung von Regex, bevor das Datum analysiert wird. (.replaceFirst ("- (?! -)", "-20") – nhahtdh
Ich habe es nur durch Stringmanipulation implementiert nur gedacht, dass es eine Möglichkeit geben könnte, es zu tun – Edge