以下は、コーディングしようとしているロジックです。
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時間が追加されることを理解しています)。
出力を理解するのを手伝ってください。