ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 简介 作为一个开发者,如果不用去处理时区和它带来的复杂性,那是幸运的。java.time包下的LocalDate、LocalTime、LocalDateTime和Instant基本能满足需求。当你不可回避时区时,**ZonedDateTime类**可以满足我们的需求。 * 其中每个时区都对应着 ID,地区ID都为 “{区域}/{城市}”的格式      例如 :Asia/Shanghai 等 * now():使用系统时间获取当前的ZonedDateTime * now(ZoneId zone):返回指定时区的ZonedDateTime * ZoneId:该类中包含了所有的时区信息 * getAvailableZoneIds() : 静态方法,可以获取所有时区时区信息 * of(String id) :静态方法, 用指定的时区信息获取 ZoneId 对象 # 例子 查询所有时区 ~~~ Set<String> zoneIds = ZoneId.getAvailableZoneIds(); for (String s : zoneIds) { System.out.println(s); } ~~~ 查询上海时区对应的时间 ~~~ //Asia/Shanghai LocalDateTime localDateTime = LocalDateTime.now(ZoneId.of("Asia/Shanghai")); System.out.println(localDateTime); //2019-10-20T18:52:10.383302 ~~~ 获取指定时区的ZonedDateTime ~~~ //获取本时区的ZonedDateTime ZonedDateTime zonedDateTime = ZonedDateTime.now(); System.out.println(zonedDateTime); //获取指定时区的ZonedDateTime ZonedDateTime zonedDateTime1 = ZonedDateTime.now(ZoneId.of("Asia/Shanghai")); System.out.println(zonedDateTime1); ~~~ 输出 ~~~ 2019-10-20T18:52:34.053441+08:00[Asia/Shanghai] 2019-10-20T18:52:34.054067+08:00[Asia/Shanghai] ~~~