将本地时间转换为目标时区时间
package javaTextCode;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.ZoneId;
import java.util.Date;
import java.util.TimeZone;
public class Test {
// 将时间转换为所需时区的时间
public static Date dateTransformBetweenTimeZone(Date sourceDate, DateFormat formatter, TimeZone sourceTimeZone,
TimeZone targetTimeZone) throws ParseException {
Long targetTime = sourceDate.getTime() - sourceTimeZone.getRawOffset() + targetTimeZone.getRawOffset();
return formatter.parse(formatter.format(targetTime));
}
public static void main(String[] args) throws ParseException {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
System.out.println("转换时区前: " + date);
ZoneId defaultZone = ZoneId.systemDefault();
TimeZone srcTimeZone = TimeZone.getTimeZone(String.valueOf(defaultZone));//当前所在地的时区
TimeZone destTimeZone = TimeZone.getTimeZone("Asia/Tokyo");//目标时区
Date time = Test.dateTransformBetweenTimeZone(date, formatter, srcTimeZone, destTimeZone);
System.out.println("转换时区后: " + time);
}
}

浙公网安备 33010602011771号