我收到错误:
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的德语缩写,这使得这段代码在我的系统上工作。
如果您不提供不同/特定的Locale
,DateTimeFormatter
将使用系统的语言设置。
若要确保将解析英语日期时间,请提供对DateTimeFormatter
的Locale
:
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