在工作过程遇到了时间处理的问题,因为需要统一将时间处理按照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 "";
}
}