Voici la logique que nous essayons de coder.
Nous avons une date de début (SD) et une date de fin (ED) en UTC, nous convertissons d'abord la date de début en PST (SD_PST) puis nous ajoutons la différence entre la date de début et la date de fin à la date de début convertie en PST (SD_PST+(ED moins SD)) pour obtenir ED_PST (date de fin en PST).
Voici notre code partiel.
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
J'ai compris que l'heure d'été affecte le résultat, mais je n'arrive pas à comprendre comment une heure supplémentaire est ajoutée, le résultat attendu est le suivant 2017-03-12T2:00-07:00[PST8PDT]
(Je comprends que dans dst -7 heures sont ajoutées).
Veuillez m'aider à comprendre le résultat.