时间处理得到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 "";
    }
}

 

转载于:https://www.cnblogs.com/woniu4/p/5515869.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值