Java从带有GMT字符串的字符串中解析日期

标签 java java-time

我有以下日期字符串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 替换为 xX 以获得相同的结果。

如果您愿意,您可以将其拼写出来,但这不是必需的。

"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/

相关文章:

java - 使用 Hibernate Annotations 映射枚举类型

java - Calendar to Date 问题,期间有 1 年错误

java - 多维数组日历,如何解决简单问题

Java8 appendPattern 与 appendValue 方法定义的模式产生不同的结果

java - Duration.ofDays 生成 UnsupportedTemporalTypeException

java - 如何替换 setDate 和 getDate

java - 如何将用户 session 传递给 REST Web 服务

java - HASingleton 无法查找 JNDI bean

java - JSR310 如何国际化月日模式?

Java Time API - 获取总运行时间的更好方法