// JDK 1.8之前做法
TimeZone.getDefault().getID() // "Asia/Shanghai"
TimeZone.getTimeZone("GMT+08:00").getID() // "GMT+08:00"
TimeZone.getTimeZone("GMT-05:00").getID() // "GMT-05:00"
Arrays.stream(TimeZone.getAvailableIDs()).forEach(System.out::println); // 查询所有可用的zoneId
// JDK 1.8之后做法
ZoneId.systemDefault().getId() // "Asia/Shanghai"
ZonedDateTime.now().getZone().getId() // "Asia/Shanghai"
ZoneId.getAvailableZoneIds().forEach(System.out::println); // 查询所有可用的zoneId
ZoneId.of("Asia/Shanghai").getId()); // Asia/Shanghai
ZoneId.of("+09:00").getId()); // +09:00
ZoneId.of("+8").getId()); // +08:00
ZoneId.of("+0").getId()); // Z
ZoneId.of("Z").getId()); // Z
ZoneId.of("UTC").getId()); // UTC
ZoneId.from(ZonedDateTime.now()).getId() // "Asia/Shanghai"
ZoneId.from(ZoneOffset.of("+8")).getId() // "+08:00"
//ZoneId.from(LocalDateTime.now()));//报错:java.time.DateTimeException: Unable to obtain ZoneId from TemporalAccessor:
//ZoneId.from(LocalDate.now())); //报错:java.time.DateTimeException: Unable to obtain ZoneId from TemporalAccessor:
// 根据偏移量得到的ZoneId内部并无现成时区规则可用,因此对于有夏令营的国家转换可能出问题,一般不建议这么去做
ZoneId.ofOffset("UTC", ZoneOffset.of("+8")).getId() // "UTC+08:00"
ZoneId.ofOffset("UTC", ZoneOffset.of("Z")).getId() // "UTC"
TimeZone.getDefault()); // sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null]
TimeZone timeZone = TimeZone.getTimeZone("GMT+8"); // sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
TimeZone.setDefault(timeZone); // sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
-Duser.timezone=GMT+8
将操作系统主机时区设置为北京时区,这是推荐方式,可以完全对开发者无感,也方便了运维统一管理。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。