利用SimpleDateFormat进行时间的跨时区转换 - Java

时间:2021-06-11 00:46:57

     * 次方法主要用来将特定时区的时间转换成指定时区的时间,比如将北京时间“2018-04-08 15:40:49.031”,转换对应的美国东部时间是“2018-04-08 03:40:49.031”
     * 本方法共三个参数,第一个是待转换的时间,第二个是待转换时间是哪个时区,第三个是需要转换成的时区
     * AvailableIDs:
     * US/Eastern美国东部时间
     * UTC世界标准时间
     * PST太平洋标准时间
     * Asia/Shanghai上海时间
     */
    public String formatToDateUseTimezone(String date,String timezoneid1, String timezoneid2){
        TimeZone.setDefault(TimeZone.getTimeZone(timezoneid2));
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        formatter.setTimeZone(TimeZone.getTimeZone(timezoneid1));
        Date d = null;
        String s = null;
            try {
                d = formatter.parse(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            s = formatDate(d);
            return s;
    }

 

基本概念:

UTC

协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps UniverselCoordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。

GMT

世界时UT即格林尼治时间,格林尼治所在地的标准时间。

Unix Time

Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)

是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。