Java中ZonedDateTime使用详解及时间转化

您所在的位置:网站首页 毫秒转换日期工具有哪些 Java中ZonedDateTime使用详解及时间转化

Java中ZonedDateTime使用详解及时间转化

2023-10-27 04:16| 来源: 网络整理| 查看: 265

1、概述

带时区的日期和时间:ZoneDateTime

2、认识时区图

不同的国家处在不同的时区上,伦敦为中时区,中国采用东八区时间,意思是比标准时间早八个小时。

由于地球是圆形的,根据地球自转的方向,东八区会比中时区提前进入新的一天,看见太阳。

Java中的ZoneDateTime就可以获取同一天,不同时区的时间。

a4db500e2d4f4b4faa6c7a71798deb05.png3、获得时区的方式 //获取所有时区,输出:[Asia/Aden, America/Cuiaba, Etc/GMT+9, Etc/GMT+8, Africa/Nairobi,…… Set availableZoneIds = ZoneId.getAvailableZoneIds(); //获取当前计算机默认的时区,也就是东八区时间 ZoneId zoneId= ZoneId.systemDefault();//输出:Asia/Shanghai 4、ZoneDateTime使用 4.1、获取标准中时区时间

美国伦敦时间,UTC

ZonedDateTime zoneDateTimeNow01 = ZonedDateTime.now(Clock.systemUTC()); 4.2、获取指定时区的时间 ZoneId zoneId= ZoneId.systemDefault();//获取当前计算机默认的时区,也就是东八区时间 ZonedDateTime zoneDateTimeNow03 = ZonedDateTime.now(zoneId); 4.3、获取东八区时间 //LocalDateTime能够获取当前东八区的时间 LocalDateTime localDateTimeNow = LocalDateTime.now(); 5、使用ZoneDateTime转换时间

说明1:Z(zero)是表示0时区,对我们国家来说,采用北京时间,处于东八区 UTC+8。所以带Z的时间格式,转换成北京时间需要加上 8 个小时。

说明2:T:表示时间元素的开始。

5.1、字符串转ZonedDateTime public static void main(String[] args) { //获取默认的时区,输出为:Asia/Shanghai ZoneId zoneId= ZoneId.systemDefault(); //定时时间格式,T表示时间元素的开始, String timePattern = "yyyy-MM-dd'T'HH:mm:ssZ"; DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(timePattern); //定义一个字符串类型的时间 String time1="2023-06-06T00:18:14+0800"; //将时间类型的字符串转化成ZonedDateTime ZonedDateTime zonedDateTime1 = ZonedDateTime.parse(time1, dateTimeFormatter); //获取东八区时间 ZonedDateTime ZonedDateTime2 = zonedDateTime.withZoneSameInstant(zoneId); //输出:2023-06-06T00:18:14+08:00[Asia/Shanghai] System.out.println(ZonedDateTime2); } 5.2、ZonedDateTime转LocalDateTime/LocalDate/LocalTime

【代码】

public static void main(String[] args) { ZonedDateTime zonedDateTime = ZonedDateTime.now(); //转LocalDate LocalDate localDate= zonedDateTime.toLocalDate(); System.out.println("localDate=>"+localDate); //LocalTime LocalTime localTime= zonedDateTime.toLocalTime(); System.out.println("localTime=>"+localTime); //转LocalDateTime LocalDateTime localDateTime= zonedDateTime.toLocalDateTime(); System.out.println("localDateTime=>"+localDateTime); //转Instant Instant instant= zonedDateTime.toInstant(); System.out.println("instant=>"+instant); }

【输出结果】

localDate=>2023-06-06 localTime=>00:57:07.011 localDateTime=>2023-06-06T00:57:07.011 instant=>2023-06-05T16:57:07.011Z

6、JDK.8日期和时间API概述

新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。

其次,新API的类型几乎全部是不变类型(和String的使用类似),可以放心使用不必担心被修改。

LocalDateTime是JDK1.8开始的新特性,主要的核心类有:

1、时间和日期类:LocalDateTime-获取年月日时分秒   LocalDate-年月日   LocalTime-时分秒

【2、带时区的日期和时间:ZonedDateTime】

详解地址:https://blog.csdn.net/tangshiyilang/article/details/131058869

【3、时刻:Instant是时间线上的一个瞬时点。】

Java中Date类的toInstant()方法用于将Date对象转换为Instant对象。在转换过程中会创建一个Instant,用于表示时间轴上与此日期相同的点。

【4、时区:ZoneId,ZoneOffSet】

java.time.ZoneOffset.ofHours(int hours)方法使用以小时为单位的偏移量获取 ZoneOffset 的实例

ZoneId.systemDefault():获取时区名称 输出:Asia/Shanghai

【5、时间间隔:Period,Duration】

使用详解:https://blog.csdn.net/tangshiyilang/article/details/131178453

6、Month月份

7、Week周

8、Clock:

 

 

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3