java.time.format.DateTimeParseException:无法在索引0处解析文本'2020年6月4日8:58:15'

时间:2020-06-08 07:46:48

标签: java

我得到了错误:

java.time.format.DateTimeParseException
无法在索引0处解析文本“ 2020年6月4日8:58:15”

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);

有人可以在这里看到我没做的事吗?

关于弗莱明(flemming)

1 个答案:

答案 0 :(得分:0)

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

之所以做出此假设,是因为您的错误语言指出(..)无法在索引0 处解析,这是日期表示的开始。模式。

在这里,您使用月份名称的缩写,并且这些缩写因语言而异。在我国, Jun 是英语中 June 的缩写,但碰巧的是,它也是 Juni 的德语缩写,因此该代码可在我的系统上运行。
如果您没有提供其他/特定的DateTimeFormatter,则Locale将使用系统的语言设置。

为确保将解析英语日期时间,请向Locale提供DateTimeFormatter

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