package site.duanzy.util;
import java.time.ZoneId;
import java.time.ZonedDateTime;
/**
* @author leo
* @date 2022/3/25 16:32
*/
public class TimeZoneUtil {
public static void main(String[] args) {
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2022-04-28T15:51:00+08:00"); // 夏令时
ZonedDateTime zonedDateTime2 = ZonedDateTime.parse("2022-01-01T15:51:00+08:00"); // 冬令时
ZonedDateTime zonedDateTime3 = ZonedDateTime.now(); // 冬令时
// ZonedDateTime st = zonedDateTime.withZoneSameInstant(ZoneId.of("America/Los_Angeles"));
// ZonedDateTime st = zonedDateTime.withZoneSameInstant(ZoneId.of("America/New_York"));
// ZonedDateTime st = zonedDateTime.withZoneSameInstant(ZoneId.of("America/Chicago"));
ZonedDateTime st = zonedDateTime.withZoneSameInstant(ZoneId.of("Australia/Canberra"));
ZonedDateTime st2 = zonedDateTime2.withZoneSameInstant(ZoneId.of("Australia/Canberra"));
ZonedDateTime st3 = zonedDateTime3.withZoneSameInstant(ZoneId.of(convertTime("PST")));
System.out.println(st.getHour()); // 小时
System.out.println(st.getDayOfWeek().getValue()); // 周
System.out.println(st.toLocalDateTime()); // 字符串时间
System.out.println("--------------------------------");
System.out.println(st2.getHour());
System.out.println(st2.getDayOfWeek().getValue());
System.out.println(st2.toLocalDateTime());
System.out.println("--------------------------------");
System.out.println(st3.getHour());
System.out.println(st3.getDayOfWeek().getValue());
System.out.println(st3.toLocalDateTime());
}
/**
* 简称转成详细
* @param
* @param timeZone
* @return
*/
private static String convertTime(String timeZone){
String newHour = null;
switch (timeZone){
case "PST":
// 洛杉矶,中国时间-16(夏令时-15)
newHour = "America/Los_Angeles";
break;
case "EST":
// 纽约,中国时间-13
newHour = "America/New_York";
break;
case "CDT":
// 芝加哥,中国时间-14
newHour = "America/Chicago";
break;
case "CET":
// 柏林,中国时间-7
newHour = "Europe/Berlin";
break;
case "GMT":
// 伦敦,中国时间-8
newHour = "Europe/London";
break;
case "CST":
// 北京,中国时间-0
newHour = "Asia/Shanghai";
break;
case "JST":
// 东京,中国时间+1
newHour = "Asia/Tokyo";
break;
case "AEST":
// 堪培拉(澳大利亚的首都),中国时间+2
newHour = "Australia/Canberra";
break;
}
return newHour;
}
}
执行结果:
17
4
2022-04-28T17:51
--------------------------------
18
6
2022-01-01T18:51
--------------------------------
1
5
2022-03-25T01:39:02.964