java 北京时间转太平洋时间

我在用 Java 的工具库 joda 来完成的时区的转换。

dateTime = new DateTime(dateTime).withZone(DateTimeZone.forID("US/Arizona")).toLocalDateTime().toDateTime();

但有一点没想明白。。北京时间转成 太平洋时间,不是要考虑 冬令和夏令的问题嘛。

但是我转换后得到的太平洋时间,始终是相差 15个小时,没有出现16个小时的问题。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**

  • Created by LiChao on 2017/11/23
    */
    public class RegexTest {

    public static void main(String args[]) throws ParseException {

    UTCToCST("2017-11-27T03:16:03.944Z", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    

    }

    public static void UTCToCST(String UTCStr, String format) throws ParseException {
    Date date = null;
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    date = sdf.parse(UTCStr);
    System.out.println("UTC时间: " + date);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) + 8);
    //calendar.getTime() 返回的是Date类型,也可以使用calendar.getTimeInMillis()获取时间戳
    System.out.println("北京时间: " + calendar.getTime());
    }

}

时区相差是估计的 ,做一个固定的加减时间