Für die Formatierung einer Datum-Zeit-Bezeichnung vor 5 Tagen sind die beiden Formatierer gleichwertig. Sie sind nicht für alle möglichen Daten äquivalent, weder zum Formatieren noch zum Parsen.
Lassen Sie uns versuchen, sie aus:
DateTimeFormatter yyyyMmDd = DateTimeFormatter.ofPattern("yyyy-MM-dd");
int[] yearsToTest = { -900_000_000, -10_000, -2, 0, 1, 2017, 2099, 9999, 10_000, 900_000_000 };
for (int year : yearsToTest) {
LocalDate date = LocalDate.of(year, Month.DECEMBER, 2);
String dateFormattedIso = date.format(DateTimeFormatter.ISO_LOCAL_DATE);
String dateFormattedYyyyMmDd = date.format(yyyyMmDd);
String diff = dateFormattedIso.equals(dateFormattedYyyyMmDd) ? "Same" : "Different";
System.out.format("%-18s%-18s%s%n", dateFormattedIso, dateFormattedYyyyMmDd, diff);
}
Die oben genannten Schnipsel gibt:
-900000000-12-02 +900000001-12-02 Different
-10000-12-02 +10001-12-02 Different
-0002-12-02 0003-12-02 Different
0000-12-02 0001-12-02 Different
0001-12-02 0001-12-02 Same
2017-12-02 2017-12-02 Same
2099-12-02 2099-12-02 Same
9999-12-02 9999-12-02 Same
+10000-12-02 +10000-12-02 Same
+900000000-12-02 +900000000-12-02 Same
So für die Formatierung es scheint, dass sie seit Jahren in der gemeinsamen Zeit gleichwertig sind („AD“), aber nicht seit Jahren vor der gemeinsamen Ära. yyyy
respektiert, dass es kein Jahr 0 gibt, so wird ein Jahr von 0 in der LocalDate
als Jahr 1 gerendert. Es versteht sich, dass es BCE ist, diese Information wird nicht gedruckt. Der ISO-Formatierer nimmt das Jahr wörtlich, mit Vorzeichen und allem.
Sie können das Verhalten von ISO_LOCAL_DATE
mit uuuu
statt yyyy
erhalten.
"Lokal" bedeutet hier nur ohne Zeitzone, was wiederum bedeutet, dass die Zeitzoneninformation von Ihrem ZonedDateTime
nicht gedruckt wird, was Sie ohnehin nicht erwartet hätten.
können Sie nicht [die Quellen] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/time/format/DateTimeFormatter.java # DateTimeFormatter.0ISO_LOCAL_DATE) oder etwas testen? –
Erstes Google-Ergebnis: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE –
Ich habe die Dokumente gelesen und beide getestet. Die Ausgabe erscheint identisch und sieht so aus, als ob sie aus der Dokumentation identisch sein sollten. Der "LOKALE" Teil von mir gab mir jedoch eine Pause. Beachten Sie, dass ich einen Offset habe und ich ZonedDateTime verwende. Ich glaube, ich war mehr auf der Suche nach irgendwelchen Schwierigkeiten oder "sie sind die gleichen, außer unter diesen besonderen Umständen, da Sie mit Offsets, etc. beschäftigt sind" –