【发布时间】:2019-03-12 08:41:43
【问题描述】:
上下左右搜索——找不到这个问题的简单答案:
我有 java.util.Date 实例,它从 mySQL 获取它的值。
我还有登录用户的时区代码。
我需要获取用户时区的实际时间。
例如:
我的服务器机器时区是 GMT+2。
我在DB中的日期值是:2017-02-09 16:38:58.000
根据我的服务器机器时区,我将其放入 date instance 为:2017-02-09T16:38:58.000+0200
现在我需要知道如果:
如果,例如,我的客户端时区代码是 GMT+4,我想得到:
2017-02-09 20:38:58.000
纯日期,与我的时区一致,不包含“+4”或“GMT”指示。
简而言之:将我的 java.util.date 转换为特定时区的纯日期。
听起来很简单?在阅读了很多文档之后,我已经不确定这是否真的很简单。
【问题讨论】:
-
我建议你不要使用
Date。该课程设计不良且早已过时。而是使用LocalDateTime和OffsetDateTime或ZonedDateTime,均来自java.time, the modern Java date and time API。 -
那么我是否正确理解了 UTC 数据库中的日期时间,但是当您检索它时,您(错误地)收到 2017-02-09T16:38:58.000+0200?那么我们需要补偿错误并转换到客户端的时区吗?当然我们可以做到。
标签: java timezone java.util.date