5日前の日付時刻の書式設定では、2つの書式は同じになります。可能なすべての日付では同等ではなく、書式設定や解析には対応しません。
のは、それらを試してみましょう:
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);
}
上記のスニペットプリント:
-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
だから書式設定のために、彼らが、共通の時代(「AD」)での年の同じですようだが、ではありません共通の時代の前に数年間。 yyyy
は、年0がないとみなしてLocalDate
の0年を1年としてレンダリングします。それはBCEであると理解されていますが、この情報は印刷されません。 ISOフォーマッタは、記号とすべてで文字通り年をとります。
yyyy
の代わりにuuuu
を使用すると、ISO_LOCAL_DATE
の現象が表示されることがあります。
ここで「ローカル」とは、タイムゾーンがないことを意味し、ZonedDateTime
のタイムゾーン情報は印刷されません。これは、とにかく予想されません。
[ソース](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/time/format/DateTimeFormatter.java)をチェックすることはできません。 #DateTimeFormatter.0ISO_LOCAL_DATE)または何らかのテストを行いますか? –
最初のGoogleの結果:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE –
私はドキュメントを読んで両方をテストしました。出力は同じように見え、ドキュメントのように同じである必要があります。しかし、その "ローカル"の部分は私に一時停止を与えた。通知私はオフセットがあり、私はZonedDateTimeを使用しています。 –