世界时区

根据各个国家经纬度的不同,时区也不相同,时区一共划分为24个时区,每一时区由一个英文字母表示,每隔经度15°划分一个时区,有一个例外,每个时区有一条中央子午线。

java如何把时间戳转换为时间(Java世界时区英国格林威治市时间转北京时间)(1)

代码实现

测试类:

public class TimeZoneUtilsTest { 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.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); } }

,