我认为解释起来有点复杂,因为您在 ofLocalizedDate、ofLocalizedDateTime 和 FormatStyle 之间混合了两个东西:
在第一种情况下,您使用 FormatStyle.FULL 调用 ofLocalizedDate,因此您忽略了时间部分。
在第二种情况下,您还使用FormatStyle.FULL 调用ofLocalizedDateTime,这将包括日期的所有部分,LocalDate 或LocalDateTime 不是这种情况。
为了确保让我们尝试使用MEDIUM 或SHORT 而不是FULL:
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(ldt)
=> 30 déc. 2019 à 14:57:40 - without any exception
欲了解更多详情,请查看此处的 cmets:
/**
* Full text style, with the most detail.
* For example, the format might be 'Tuesday, April 12, 1952 AD' or '3:30:42pm PST'.
*/
FULL,
/**
* Long text style, with lots of detail.
* For example, the format might be 'January 12, 1952'.
*/
LONG,
/**
* Medium text style, with some detail.
* For example, the format might be 'Jan 12, 1952'.
*/
MEDIUM,
/**
* Short text style, typically numeric.
* For example, the format might be '12.13.52' or '3:30pm'.
*/
SHORT;
要恢复,我们可以创建一个此表:
|
ofLocalizedTime |
ofLocalizedDate |
ofLocalizedDateTime |
| LocalTime |
MEDIUM, SHORT |
|
|
| LocalDate |
|
FULL, LONG, MEDIUM, SHORT |
|
| LocalDateTime |
MEDIUM, SHORT |
FULL, LONG, MEDIUM, SHORT |
MEDIUM, SHORT |
| ZonedDateTime |
FULL, LONG, MEDIUM, SHORT |
FULL, LONG, MEDIUM, SHORT |
FULL, LONG, MEDIUM, SHORT |
| OffsetDateTime |
MEDIUM, SHORT |
FULL, LONG, MEDIUM, SHORT |
MEDIUM, SHORT |
=> FULL, LONG, MEDIUM, SHORT are FormatStyle
您可以将其阅读为LocalDateTime 可以使用ofLocalizedDate 和所有格式样式,并且不能接受任何FormatStyle 和ofLocalizedDateTime