世界时区
根据各个国家经纬度的不同,时区也不相同,时区一共划分为24个时区,每一时区由一个英文字母表示,每隔经度15°划分一个时区,有一个例外,每个时区有一条 中央子午线 。
代码实现
测试类:
public class TimeZoneUtils Test {
public static void main(String[] args) {
// 英国格林威治市时间
String timeStr = "2022.09.13 17:08:42";
// 输出北京时间
System.out.println(TimeZoneUtils.toBeiJingFromGreenwich(timeStr));
System.out.println(TimeZoneUtils.toBeiJingDateFromGreenwich(timeStr));
}
}
工具类:
import java .text.Parse Exception ;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public final class TimeZoneUtils {
/**
* @param fromZoneId
* @param toZoneId
* @param format
* @param timeStr
* @return
*/ public static String to(String fromZoneId, String toZoneId, String format, String timeStr) {
String result = "";
try {
TimeZone timeZone1 = TimeZone.getTimeZone(fromZoneId);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
simpleDateFormat.setTimeZone(timeZone1);
Date date = simpleDateFormat.parse(timeStr);
TimeZone timeZone2 = TimeZone.getTimeZone(toZoneId);
simpleDateFormat.setTimeZone(timeZone2);
result = simpleDateFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
/**
* @param fromZoneId
* @param toZoneId
* @param format
* @param timeStr
* @return
*/ public static Date toDate(String fromZoneId, String toZoneId, String format, String timeStr) {
Date result = null;
try {
String dateStr = to(fromZoneId, toZoneId, format, timeStr);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
result = simpleDateFormat.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
/**
* @param timeStr
* @return
*/ public static String toBeiJingFromGreenwich(String timeStr) {
// 英国格林威治市
String fromZoneId = "GMT+1:00";
// 北京时间
String toZoneId = "GMT+8:00";
String format = "yyyy.MM.dd HH:mm:ss";
return to(fromZoneId, toZoneId, format, timeStr);
}
/**
* @param timeStr
* @return
*/ public static Date toBeiJingDateFromGreenwich(String timeStr) {
// 英国格林威治市时间
String fromZoneId = "GMT+1:00";
// 北京时间
String toZoneId = "GMT+8:00";
String format = "yyyy.MM.dd HH:mm:ss";
return toDate(fromZoneId, toZoneId, format, timeStr);
}
}