Java程序以秒为单位获取两个时区之间的时差

这是两个时区-

ZoneId zone1 = ZoneId.of("America/Panama");
ZoneId zone2 = ZoneId.of("Asia/Taipei");

设置日期-

LocalDateTime dateTime = LocalDateTime.of(2019, 04, 11, 10, 5);

现在,设置第一个时区-

ZonedDateTime panamaDateTime = ZonedDateTime.of(dateTime, zone1);

设置第二时区-

ZonedDateTime taipeiDateTime = panamaDateTime.withZoneSameInstant(zone2);

获取以秒为单位的时区差异-

taipeiDateTime.getOffset().getTotalSeconds()

示例

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Demo {
   public static void main(String[] args) {
      ZoneId zone1 = ZoneId.of("America/Panama");
      ZoneId zone2 = ZoneId.of("Asia/Taipei");
      LocalDateTime dateTime = LocalDateTime.of(2019, 04, 11, 10, 5);
      ZonedDateTime panamaDateTime = ZonedDateTime.of(dateTime, zone1);
      ZonedDateTime taipeiDateTime = panamaDateTime.withZoneSameInstant(zone2);
      System.out.println("Difference between two time zones in seconds = "+taipeiDateTime.getOffset().getTotalSeconds());
   }
}

输出结果

Difference between two time zones in seconds = 28800