世界时区
根据各个国家经纬度的不同,时区也不相同,时区一共划分为24个时区,每一时区由一个英文字母表示,每隔经度15°划分一个时区,有一个例外,每个时区有一条中央子午线。
代码实现
测试类:
public class TimeZoneUtilsTest { public static void main(String[] args) { // 英国格林威治市时间 String timeStr = "2024.09.13 17:08:42"; // 输出北京时间 System.out.println(TimeZoneUtils.toBeiJingFromGreenwich(timeStr)); System.out.println(TimeZoneUtils.toBeiJingDateFromGreenwich(timeStr)); }}
工具类:
import java.text.ParseException;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); }}