java时区转换

发布时间 2023-11-28 17:53:37作者: 叶落の无痕

#用户时间转utc时间

public static Date convertToUtcTime(Date dt, String timeZone){
return convertToUtcTime(dt,TimeZone.getTimeZone(timeZone));
}
public static Date convertToUtcTime(Date dt, TimeZone timeZone) {
long localTimeInMillis = dt.getTime();
Calendar calendar = Calendar.getInstance(timeZone);
calendar.setTimeInMillis(localTimeInMillis);
int zoneOffset = calendar.get(15);
int dstOffset = calendar.get(16);
calendar.add(14, -(zoneOffset + dstOffset));
Date utcDate = new Date(calendar.getTimeInMillis());
return utcDate;
}
#utc时间转用户时间
public static Date convertUtcToUserTime(Date sourceDate, String sourceTimeZone) {
TimeZone targetTimeZone = TimeZone.getTimeZone(ZoneOffset.UTC);
TimeZone sourceTZ = TimeZone.getTimeZone(sourceTimeZone);
Long targetTime = sourceDate.getTime() + (long)sourceTZ.getRawOffset() - (long)targetTimeZone.getRawOffset();
return new Date(targetTime);
}