java注解将时间格式转换成时间戳(Java世界时区英国格林威治市时间转北京时间)
java注解将时间格式转换成时间戳(Java世界时区英国格林威治市时间转北京时间)
世界时区根据各个国家经纬度的不同,时区也不相同,时区一共划分为24个时区,每一时区由一个英文字母表示,每隔经度15°划分一个时区,有一个例外,每个时区有一条中央子午线。
代码实现测试类:
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);
}
}