java.time.format.DateTimeParseException:文本'Tue Dec 30 14:28:38 CET 2014'无法在索引0处解析

时间:2014-12-30 13:42:17

标签: java string parsing date

在我正在处理的网络应用程序上,我以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解析

这是如何引起的?如何解决?

1 个答案:

答案 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",则使用默认值。