java.time.format.DateTimeParseException:无法在索引 0 处解析文本'Jun 4 2020 8:58:15 AM'



我收到错误:


java.time.format.DateTimeParseException:无法在索引 0 处解析文本"Jun 4 2020 8:58:15 AM">

String ajourTsAdjusted = "Jun 4 2020 8:58:15 AM";
DateTimeFormatter dt = DateTimeFormatter.ofPattern("MMM d yyyy h:mm:ss a");
LocalDateTime ajDate = LocalDateTime.parse(ajourTsAdjusted, dt);

有人能看到我在这里没有做什么吗?

问候弗莱明

我假设您的系统语言不是英语。

做出此假设是因为您的错误语言指出(..( 无法在索引 0 处解析,即日期或模式的开头。

在那里,您有一个月份名称的缩写,这些缩写因语言而异。在我的国家,Jun是英语中June的缩写,但巧合的是,它也是Juni的德语缩写,这使得这段代码在我的系统上工作。
如果您不提供不同/特定的LocaleDateTimeFormatter将使用系统的语言设置。

若要确保将解析英语日期时间,请提供对DateTimeFormatterLocale

public static void main(String[] args) {
String ajourTsAdjusted = "Jun 4 2020 8:58:15 AM";
DateTimeFormatter dt = DateTimeFormatter.ofPattern("MMM d yyyy h:mm:ss a",
Locale.ENGLISH);
LocalDateTime ajDate = LocalDateTime.parse(ajourTsAdjusted, dt);
System.out.println(ajDate);
}

这将输出 ISO 格式的日期时间String如下所示:

2020-06-04T08:58:15

最新更新