【发布时间】:2021-05-02 03:13:57
【问题描述】:
在 Java 8 中,我需要一种从 ISO 8601 格式的 GMT 日期时间获取本地日期时间 (GMT+1) 的方法。
一个简单的例子:
客户在这个日期时间向我(服务器)发送"2020-01-11T23:00:00.000Z"
当用户从日期选择器中选择 2020 年 1 月 12 日时,客户会向我发送此消息。 GMT+1 是 1 月 12 日,而 GMT 是前一天。
由于上述原因,我知道对我而言,这个日期时间不是 2020 年 1 月 11 日,而是 2020 年 1 月 12 日(GMT+1)。
所以我需要这个值"2020-01-12T00:00:00.000"
确切地说,我不需要使用 simpleDateFormat 打印它,只需在 java.util.Date 类字段中将 "2020-01-11T23:00:00.000Z" 转换为 "2020-01-12T00:00:00.000"
谢谢。
【问题讨论】:
-
我建议你不要使用
SimpleDateFormat和java.util.Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。如果您只对日期(而不是一天中的时间)感兴趣,请使用 java.time, the modern Java date and time API 中的LocalDate。 -
正如您所说的那样,2020-01-11T23:00:00.000Z 和 2020-01-12T00:00:00.000+01:00 是同一时间点。
Date只是一个时间点,因此代表这两个时间的两个Date对象将是相同的。它们之间没有转换。 -
您知道客户端时区或UTC偏移量吗?否则你会不知所措,至少对于某些输入值。
标签: java datetime timezone gmt