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