# 時區ZonedDateTime
```java=
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
public class Test {
public static void main(String[] args) {
ZonedDateTime depart = ZonedDateTime.of(2015,1,15,3,0,0,0, ZoneId.of("UTC-7"));
ZonedDateTime arrive = ZonedDateTime.of(2015,1,15,9,0,0,0, ZoneId.of("UTC-5"));
//arrive-depart = 時間相減 - 時區相減
// (9-3) - (-5-(-7)) = (6) - (2) = 4
long hrs = ChronoUnit.HOURS.between(depart, arrive);
System.out.println("Travel Time is "+hrs+" hours");
ZonedDateTime depart2 = ZonedDateTime.of(2015,1,15,3,0,0,0, ZoneId.of("UTC-8"));
ZonedDateTime arrive2 = ZonedDateTime.of(2015,1,15,2,0,0,0, ZoneId.of("UTC+5"));
//arrive-depart = 時間相減 - 時區相減
// (2-3) - (5-(-8)) = (-1) - (13) = -14
long hrs2 = ChronoUnit.HOURS.between(depart2, arrive2);
System.out.println("Travel Time2 is "+hrs2+" hours");
}
}
```
## 在Java8中,我們可以使用以下類來計算日期時間差異:
- Period:
- Period類方法getYears(),getMonths()和getDays()來計算
- Duration
- Duration.between(inst1, inst2).getSeconds()
- ChronoUnit
- ChronoUnit類可用於在單個時間單位內測量一段時間,例如天數或秒。
###### tags: `ocpjp`