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

标签 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);

但是我收到以下错误:

java.time.format.DateTimeParseException: Text 'Wed, 26 Feb 2020 03:42:25 -0800'  
could not be parsed at index 0

谢谢

最佳答案

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

请参阅此示例:

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));
}

我的德语系统上的输出:

2020-02-26T03:42:25-08:00

如果没有这个Locale(也可能是UK),我会得到与您相同的Exception

添加
@Lino 给出的好点:要独立于国家/地区,最好使用 Locale.ENGLISH 因为这保留了对语言的尊重,但不依赖于特定的 Locale一个国家或地区。

关于java - DateTimeParseException - 无法在索引 0 处进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60413413/

相关文章:

java - JOGL 库 - 通用性

Java使用递归将输入更改为大写

java - Java 应用程序中的 SameSite cookie

Java - 日期无效时抛出错误

java - doFilter 调用了两次,预期的行为?

c++ - 如何将日期字符串解析为 c++11 std::chrono time_point 或类似的?

java - 如果字符串包含 000,OffsetDateTime 不会显示毫秒

Java:如何从 LocalTime 对象获取总分钟数

clojure - 如何使用 #inst Date 文字中的 clojure.java-time 获取 java.time DateTime?