Java- 技术专题 -LocalDate 和 LocalTime 和 LocalDateTime
概述
JDK 8中增加了一套全新的日期时间API,这套API设计合理,是线程安全的。新的日期及时间API位于 java.time 包中,下面是一些关键类:
LocalDate:表示日期,包含年月日,格式为 2019-10-16
LocalTime:表示时间,包含时分秒,格式为 16:38:54.158549300
LocalDateTime:表示日期时间,包含年月日,时分秒,格式为 2018-09-06T15:33:56.750
DateTimeFormatter:日期时间格式化类
Instant:时间戳,表示一个特定的时间瞬间
Duration:用于计算2个时间(LocalTime,时分秒)的距离
Period:用于计算2个日期(LocalDate,年月日)的距离
ZonedDateTime:包含时区的时间
LocalDate、LocalTime、LocalDateTime类的实例是不可变的对象!
使用示例
LocalDate:获取日期时间的信息。格式为 2019-10-16
LocalTime类: 获取时间信息。格式为 16:38:54.158549300
LocalDateTime类: 获取日期时间信息。格式为 2018-09-06T15:33:56.750
对日期时间的修改,对已存在的LocalDate对象,创建它的修改版,最简单的方式是使用withAttribute方法。withAttribute方法会创建对象的一个副本,并按照需要修改它的属性。以下所有的方法都返回了一个修改属性的对象,他们不会影响原来的对象
比较、格式化与解析
在JDK8中,使用isBefore()、isAfter()、equals()方法来比较两个日期,可直接进行比较!
Instant、Duration、Period
JDK 8设置日期时间的时区
Java8 中加入了对时区的支持,LocalDate、LocalTime、LocalDateTime是不带时区的,带时区的日期时间类分别为:ZonedDate、ZonedTime、ZonedDateTime。
其中每个时区都对应着 ID,ID的格式为 “区域/城市” 。例如 :Asia/Shanghai 等。
ZoneId:该类中包含了所有的时区信息
小结
LocalDate表示日期,包含年月日
LocalTime表示时间,包含时分秒
LocalDateTime = LocalDate + LocalTime
时间的格式化和解析,通过DateTimeFormatter类型进行
学习了Instant类,方便操作秒和纳秒,一般是给程序使用的。学习Duration/Period计算日期或时间的距离,还使用时间调整器方便的调整时间,学习了带时区的3个类ZoneDate/ZoneTime/ZoneDateTime
JDK 8新的日期和时间 API的优势:
新版的日期和时间API中,日期和时间对象是不可变的。操纵的日期不会影响老值,而是新生成一个实例
新的API提供了两种不同的时间表示方式,有效地区分了人和机器的不同需求
是线程安全的
评论