下面是我们试图编码的逻辑。
我们有 UTC 中的 startdate(SD) 和 enddate(ED),我们首先将 startdate 转换为 PST(SD_PST),然后将 startdate 和 enddate 之间的差异添加到 PST 转换的 startdate (SD_PST+(ED 减去 SD)) 以获得 ED_PST(end date在太平洋标准时间)
下面是我们的部分代码。
Duration duration = Duration.between(sud.getStartTime().toInstant(),
sud.getEndTime().toInstant()); // Sun Mar 12 08:00:00 PDT 2017 - [sud.getStartTime()] & Sun Mar 12 09:00:00 PDT 2017 - [sud.getEndTime()]
ZonedDateTime ldt = ZonedDateTime.ofInstant(convertToPst(sud.getStartTime()).toInstant(),
ZoneId.systemDefault()); // ldt now is 2017-03-12T1:00-08:00[PST8PDT]
ldt = ldt.plusSeconds(duration.getSeconds()); // ldt now is 2017-03-12T3:00-07:00[PST8PDT] , duration.getSeconds() is 3600
Date f2 = Date.from(ldt.toInstant()); // output Sun Mar 12 03:00:00 PDT 2017
我知道夏令时会影响输出,但我无法理解如何额外添加 1 小时,我的预期输出是 2017-03-12T2:00-07:00[PST8PDT]
(我知道在 dst 中添加了 -7 小时)。
请帮助我理解输出。