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)
谢谢
您需要提供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)
没有这个Locale(UK也可能是)我得到的Exception和你得到的一样。
另外
@Lino 给出的好点:独立于国家,更好地使用,Locale.ENGLISH因为这保持了对语言的尊重,但不依赖于特定Locale的国家或地区。