gpt4 book ai didi

java - 使用 Locale 格式化 LocalDateTime 实例时获取 java.time.DateTimeException

转载 作者:行者123 更新时间:2023-11-29 08:24:01 24 4
gpt4 key购买 nike

这个我不是很清楚。出于某种原因,当我尝试格式化 LocalDateTime使用 DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).withLocale(...) 的实例,我得到一个异常(exception):

java.time.DateTimeException: Unable to extract value: class java.time.LocalDateTime

只有在我使用 FormatStyle.LONG 时才会发生这种情况, 适用于 FormatStyle.MEDIUM ,例如。

这是我的测试:

@Test
public void dateTest() {
LocalDateTime now = LocalDateTime.now();

// this is ok. prints a value
System.out.println("LocalDateTime now (formatted with locale): "
+ now.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
.withLocale(new Locale("it"))));

// this fails with java.time.DateTimeException: Unable to extract value: class java.time.LocalDateTime
// only if FormatStyle.LONG (as it is now)
System.out.println("LocalDateTime now (formatted with locale): "
+ now.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG)
.withLocale(new Locale("it"))));
}

有什么好的解释吗?

最佳答案

使用 FormatStyle.LONG 你必须使用:

ZonedDateTime.now()

代替:

LocalDateTime.now()

因为 ZonedDateTime 提供了很多细节,不像 LocalDateTime

当您使用 FormatStyle.LONG 时,格式化程序会搜索 ZoneId 等在 LocalDateTime 中找不到的其他信息,因此您会遇到异常

关于java - 使用 Locale 格式化 LocalDateTime 实例时获取 java.time.DateTimeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com