gpt4 book ai didi

java - 解析字符串到日期,时区偏移量完好无损

转载 作者:行者123 更新时间:2023-12-02 13:09:09 27 4
gpt4 key购买 nike

我们有一个客户以字符串格式向我们发送日期,如“2017-06-14T04:00:00-08:00”。在使用它之前,我们需要将其转换为 JAVA Date 类型。

我们是这样解析的:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); 
dateParsedFromString = formatter.parse("2017-06-14T04:00:00-08:00");

但是我们在解析之后丢失了偏移量。当我们将其转换回字符串时,我们会看到值:

2017-06-14T08:00:00-04:00

如何在 JAVA 中从 String 转换为 Date 而不更改偏移量?

最佳答案

java.util.Date不存储时区信息。

要保留时区,请使用 ZonedDateTimeOffsetDateTime (Java 8+)。

因为您的日期字符串是 ISO 8601 ,您甚至不需要指定日期格式。

ZonedDateTime zdt = ZonedDateTime.parse("2017-06-14T04:00:00-08:00");
System.out.println(zdt); // prints: 2017-06-14T04:00-08:00
OffsetDateTime odt = OffsetDateTime.parse("2017-06-14T04:00:00-08:00");
System.out.println(odt); // prints: 2017-06-14T04:00-08:00

对于 Java 8 之前的版本,请使用 ThreeTen-Backport :

ThreeTen-Backport provides a backport of the Java SE 8 date-time classes to Java SE 6 and 7.

关于java - 解析字符串到日期,时区偏移量完好无损,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44018392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com