我正在尝试解析以下日期“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/