DateTimeParseException - 无法在索引 0 处进行解析

vrv*_*485 3 java date-parsing java-time

我正在尝试解析以下日期"Wed, 26 Feb 2020 03:42:25 -0800"

String datePattern = "EEE, dd MMM yyyy HH:mm:ss Z";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(datePattern);
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateStr, formatter);
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

java.time.format.DateTimeParseException: Text 'Wed, 26 Feb 2020 03:42:25 -0800'  
could not be parsed at index 0
Run Code Online (Sandbox Code Playgroud)

谢谢

deH*_*aar 5

您需要提供Locale使用 date 使用的语言的String。否则,格式化程序将采用系统默认区域设置。

看这个例子:

public static void main(String[] arguments) {
    String dt = "Wed, 26 Feb 2020 03:42:25 -0800";
    ZonedDateTime zdt = ZonedDateTime.parse(dt, 
            DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US));
    System.out.println(zdt.format(DateTimeFormatter.ISO_ZONED_DATE_TIME));
}
Run Code Online (Sandbox Code Playgroud)

我的德语系统上的输出:

public static void main(String[] arguments) {
    String dt = "Wed, 26 Feb 2020 03:42:25 -0800";
    ZonedDateTime zdt = ZonedDateTime.parse(dt, 
            DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US));
    System.out.println(zdt.format(DateTimeFormatter.ISO_ZONED_DATE_TIME));
}
Run Code Online (Sandbox Code Playgroud)

没有这个LocaleUK也可能是)我得到的Exception和你得到的一样。

另外
@Lino 给出的好点:独立于国家,更好地使用,Locale.ENGLISH因为这保持了对语言的尊重,但不依赖于特定Locale的国家或地区。