java.time
El java.util
Date-Time API und ihre Formatierungs-API, SimpleDateFormat
sind veraltet und fehleranfällig. Es wird empfohlen, sie nicht mehr zu verwenden und auf die moderne Date-Time-API * .
Nachfolgend wird eine Mitteilung der Homepage von Joda-Time :
Beachten Sie, dass ab Java SE 8 die Benutzer aufgefordert werden, auf java.time (JSR-310) zu migrieren - ein Kernbestandteil des JDK, der dieses Projekt ersetzt.
Lösung mit java.time
die moderne Date-Time API:
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String strDate = "2011-01-18 00:00:00.0";
DateTimeFormatter dtfInput = DateTimeFormatter.ofPattern("u-M-d H:m:s.S", Locale.ENGLISH);
LocalDateTime ldt = LocalDateTime.parse(strDate, dtfInput);
// Alternatively, the old way:
// LocalDateTime ldt = dtfInput.parse(strDate, LocalDateTime::from);
LocalDate date = ldt.toLocalDate();
System.out.println(date);
}
}
Ausgabe:
2011-01-18
ONLINE DEMO
Einige wichtige Hinweise zur Lösung:
java.time
ermöglichte den Aufruf parse
y format
Funktionen auf der Datum-Uhrzeit-Typ selbst, zusätzlich zur alten Methode (d. h. Aufruf von parse
y format
Funktionen auf den Formatierungstyp, d.h. DateTimeFormatter
im Falle von java.time
API).
- Die moderne Date-Time API basiert auf ISO 8601 und erfordert nicht die Verwendung eines
DateTimeFormatter
Objekt explizit zu verwenden, solange der Date-Time-String den ISO 8601-Standards entspricht, z. B. habe ich keine DateTimeFormatter
für die Ausgabe, weil LocalDate#toString
gibt bereits die Zeichenfolge im gewünschten Format zurück.
- Hier können Sie Folgendes verwenden
y
代わりに u
sondern Ich bevorzuge u
a y
.
Erfahren Sie mehr über die moderne Date-Time API von Pfad: Datum Uhrzeit .
* Wenn Sie aus irgendeinem Grund bei Java 6 oder Java 7 bleiben müssen, können Sie DreiZehn-Backport das den größten Teil der java.time Funktionalität für Java 6 und 7. Wenn Sie an einem Android-Projekt arbeiten und Ihr Android-API-Level noch nicht mit Java-8 übereinstimmt, prüfen Sie Java 8+ APIs verfügbar durch Desugaring y Wie man ThreeTenABP in einem Android-Projekt verwendet .