【发布时间】:2018-02-20 02:26:21
【问题描述】:
我使用的是 JDK 8,我经常使用 ZonedDateTime 和 Timestamp。但是我仍然无法解决我面临的问题。
假设我在格林威治标准时间 (UTC) 中获得了格式化的 Timestamp,并且我的服务器位于某处。假设它设置为 Asia/Calcutta TimeZone(其 ZoneOffset 为 +05:30)。
如何基本上将我的时区偏移量添加/减去时间戳?
Input : 2017-09-13 13:10:30.333
Output: 2017-09-13 18:40:30.333
解释:在输入中,时区偏移量为 5hrs 30mts 已添加到输入中。此外,输入是 Timestamp 类型,输出也是。
我使用ZoneID.systemDefault() 函数来检索 JVM 已知的 TimeZone。就我而言,TimeZone 原来是Asia/Calcutta。
【问题讨论】:
-
输入输出是日期类型还是字符串?
-
输入不是字符串。这是时间戳。
-
加/减是错误的思考方式。请参阅timezone tag wiki中的“时区!= 偏移量”
-
我从来没有说过加/减时区。我说的是加/减时区偏移量。
-
即便如此,添加或减去时间戳值并不是在另一个时区转换本地日期/时间的正确方法(正如我在下面的回答中解释的那样)
标签: java datetime timezone java-time timezone-offset