Lassen Sie mich ein paar Anregungen geben, die ein wenig über genau gehen, was über Sie gefragt. Ich denke, meine Vorschläge sollten hilfreich sein.
Zunächst sollten Sie sich nicht an die lange veralteten Klassen Date
und SimpleDateFormat
halten. The modern Java date and time API ist im Allgemeinen viel angenehmer zu arbeiten und enthält weniger unangenehme Überraschungen. Es ist als JSR-310 oder java.time
bekannt.
Zweitens sollte es nicht notwendig sein, Ihre Zeichenfolge mit einem StringBuilder
neu zu formatieren, bevor Sie das Datum daraus extrahieren. 20171230
kann direkt in ein Datum geparst werden. Noch schlimmer, die Art, wie Sie die Zeichenkette konvertieren, Sie validieren nicht die Länge: Wenn es statt 8 9 Ziffern gäbe, möchten Sie es fangen und eine Ausnahme auslösen, aber Ihr Code nimmt nur die ersten 8 Ziffern und ignoriert, wenn es mehr gibt.
Schließlich, wie Trenton Trama bereits in the other answer hingewiesen, Format-Muster-Zeichenfolgen Groß-und Kleinschreibung. Es spielt eine Rolle, ob und wo Sie Groß- oder Kleinbuchstaben verwenden. Die Verwendung des falschen Falls führt höchstwahrscheinlich zu falschen Ergebnissen. Dies gilt sowohl für die veraltete als auch die moderne API. Glücklicherweise, wenn es um das Parsen geht, neigt die moderne API viel eher dazu, eine Ausnahme zu erzeugen, wenn Sie den falschen Fall verwenden, damit Sie zumindest informiert werden, dass etwas nicht stimmt.
Und schließlich - wenn Sie möchten, dass jemand anderes Ihren Code liest, wie andere Stackoverflowers, verwenden Sie die Codierungskonventionen, um uns zu helfen. Variablennamen beginnen mit einem Kleinbuchstaben. Es ist besonders verwirrend, wenn Sie eine Klasse mit dem Namen Date
und eine Variable mit dem Namen Date
haben.
Die oben genannten Beträge bis zu:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuuMMdd");
String dateStr = "20171230";
LocalDate date = LocalDate.parse(dateStr, dtf);
System.out.println("Date is " + date);
Ausgang ist:
Date is 2017-12-30
Frage: Kann ich die moderne API mit meiner Java-Version verwenden?
Wenn mindestens Java verwenden, Sie können.