我有以下日期字符串Tue Feb 04 2020 16:11:25 GMT+0200 (IST)
,我尝试使用以下代码将其转换为日期时间:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM d yyyy HH:mm:ss O (zzz)", Locale.ENGLISH);
LocalDate dateTime = LocalDate.parse("Tue Feb 04 2020 16:11:25 GMT+0200 (IST)", formatter);
我得到了以下异常:
Text Tue Feb 04 2020 16:11:25 GMT+0200 (IST) could not be parsed at index 28
我看下面这个问题Java string to date conversion我看到了
O 本地化区域偏移 offset-O GMT+8;格林尼治标准时间+08:00; UTC-08:00;
那么为什么我会得到异常(exception)?
最佳答案
以下模式有效。
"E MMM d u H:m:s 'GMT'Z (z)"
您可以将 Z
替换为 x
或 X
以获得相同的结果。
如果您愿意,您可以将其拼写出来,但这不是必需的。
"EEE MMM dd uuuu HH:mm:ss 'GMT'ZZZ (zzz)"
您应该将该输入解析为 OffsetDateTime
,因为输入字符串包含日期、时间、和偏移量。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E MMM d u H:m:s 'GMT'Z (z)", Locale.ENGLISH);
OffsetDateTime dateTime = OffsetDateTime.parse("Tue Feb 04 2020 16:11:25 GMT+0200 (IST)", formatter);
System.out.println(dateTime);
输出
2020-02-04T16:11:25+02:00
关于Java从带有GMT字符串的字符串中解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62690429/