在我正在处理的网络应用程序上,我以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:Text'Tue Dec 30 14:28:38 CET 2014'无法在索引0解析
这是如何引起的?如何解决?
答案 0 :(得分:2)
对于当前语言,日期可能无效。月和日缩写从一个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
解析时({1}})可以。
如果您未指定"Di Dez 30 14:28:38 CET 2014"
,则使用默认值。