2

以下は、コーディングしようとしているロジックです。

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時間が追加されることを理解しています)。

出力を理解するのを手伝ってください。

4

1 に答える 1