Java解析DateTime并忽略时区

And*_*ose 2 java hibernate jpa java-time

我需要解析以下格式的日期字符串。

“2016-05-19 13:07:15 PDT”

我的数据库服务器位于 ET 中,但我想将 TIMESTAMP 存储2016-05-19 13:07:15在我的数据库中,没有时区,也不将其转换为 ET。所以,本质上,我想忽略字符串中的 PDT。

目前,我将字符串解析为一个ZonedDateTime对象,并将其映射到数据库中的 TIMESTAMP 数据类型,但 hibernate 正在后端进行一些转换,因为它知道 myZonedDateTime位于 PDT 中。因此,上面示例中的日期最终存储在我的数据库中,而2016-05-19 16:07:15不是我想要的,2016-05-19 13:07:15.

我想到的一个想法是从字符串末尾剥离 PDT,然后将其解析为 a LocalDateTime,但在这样做之前,我想看看是否有任何方法可以基本上忽略 a 中的时区ZonedDateTime,或者将上面显示的字符串解析为 a LocalDateTime(或其他一些不关心时区的 java 时间对象),而不实际执行从 PDT 到 ET 的转换。

有没有什么方法可以实现这一点,而无需在解析之前将时区从字符串中实际拉出?

Jay*_*Kay 5

这个怎么样?

String datestring = "2016-05-19 13:07:15 PDT";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss zzz");

LocalDateTime localDateTime = LocalDateTime.from(formatter.parse(datestring));
System.out.println(localDateTime);
// Output: 2016-05-19T13:07:15
Run Code Online (Sandbox Code Playgroud)

编辑:作为替代方案,如果您已经有一个ZonedDateTime对象,这也可以(并删除时区):

LocalDateTime.from(zonedDateTime);
Run Code Online (Sandbox Code Playgroud)