我得到了错误:
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)
答案 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