时间处理得到UTC时间

在工作过程遇到了时间处理的问题,因为需要统一将时间处理按照utc时间进行处理,因此,不能简单的通过系统运行直接得到时间的毫秒数,这样会在不同时区得到的值是不同的。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class TimeUtil {
    
    private final static String MINTUE = "yyyyMMddHHmm";
    
    public static String getUTCTime(String dateStr) throws ParseException
    {
        SimpleDateFormat sdf = new SimpleDateFormat(MINTUE);
        Date date = sdf.parse(dateStr);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        //方法1:直接计算相差的时间得到UTC时间
        long unixTimeGMT = calendar.getTimeInMillis() - TimeZone.getDefault().getRawOffset();
        System.out.println(unixTimeGMT);
        //方法2:通过获得时区偏移量和夏时令偏移量,再计算UTC时间
        int timeZone = calendar.get(Calendar.ZONE_OFFSET);
        System.out.println(timeZone);
        int dst = calendar.get(Calendar.DST_OFFSET);
        System.out.println(dst);
        calendar.add(Calendar.MILLISECOND, -(timeZone + dst));
        System.out.println(calendar.getTimeInMillis());
        return "";
    }
}

 

posted @ 2016-05-21 23:05  woniu4  阅读(717)  评论(0编辑  收藏  举报