java.time.format.DateTimeParseException:Text';2014年12月30日星期二14:28:38;无法在索引0处分析

java.time.format.DateTimeParseException:Text';2014年12月30日星期二14:28:38;无法在索引0处分析,java,string,parsing,date,Java,String,Parsing,Date,在我正在处理的一个web应用程序上,我以Tue Dec 30 14:28:38 CET 2014等格式检索日期,格式为String。我想将其解析为Java8LocalDateTime。以下是我尝试的总结: String string = "Tue Dec 30 14:28:38 CET 2014"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy"); LocalDat

在我正在处理的一个web应用程序上,我以
Tue Dec 30 14:28:38 CET 2014
等格式检索日期,格式为
String
。我想将其解析为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处分析文本“2014年12月30日星期二14:28:38 CET”


这是如何造成的,我如何解决它?

对于当前语言,日期可能无效。月份和日期缩写从一个
区域设置更改为另一个

检查以下示例:

当使用
Locale.ENGLISH
解析
字符串时,这是正常的,但不使用
Locale.GERMAN
(应该是
“Di Dez 30 14:28:38 CET 2014”


如果未指定
区域设置
,则使用默认设置。

使用
SimpleDataFormat
相同错误…java.text.ParseException:不可解析日期:“Tue Dec 30 14:52:47 CET 2014”使用此模式
EEE MMM dd HH:mm:ss z yyyy
可能有效
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");
    }
}