在我正在使用的Web应用程序上,我以String
的格式检索日期,例如Tue Dec 30 14:28:38 CET 2014
。我想将其解析为Java8 LocalDateTime
。以下是我的尝试摘要:
String string = "Tue Dec 30 14:28:38 CET 2014";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy");
LocalDateTime localDateTime = LocalDateTime.parse(string, formatter);
但是,它引发以下异常:
java.time.format.DateTimeParseException:无法在索引0处解析文本'Tue Dec 30 14:28:38 CET 2014'
这是怎么引起的,我该如何解决?
最佳答案
该日期可能对当前语言无效。月和日的缩写从一个Locale
更改为另一个。
检查以下示例:ideone demo
public static void main (String[] args) {
String string = "Tue Dec 30 14:28:38 CET 2014";
try {
new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH).parse(string);
System.out.println("OK ENGLISH");
} catch (Exception ex) {
System.out.println("KO ENGLISH");
}
try {
new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.GERMAN).parse(string);
System.out.println("OK GERMAN");
} catch (Exception ex) {
System.out.println("KO GERMAN");
}
}
使用
String
而不是Locale.ENGLISH
解析Locale.GERMAN
时可以(因为它应该是"Di Dez 30 14:28:38 CET 2014"
)可以。如果未指定
Locale
,则使用默认值。