Java 8 出来好久了,但是好多人还不太会用它的新特性,那我们今天来讲一讲Java 8的Time
为什么要使用Java 8 Time呢?
Java之前的Date类太老了,日历类又不方便,很多人在项目中总喜欢在util包下建一个DateUtil,里面放一些辟如比较2个时间的前后啊,获取下一个月的第一天时间等等的方法,有些公司的中间件团队也会整理一下大而全的DateUtil供整个公司使用,但是有了Java 8 的Time后,我们就可以对DateUtil说拜拜了
话说JodaTime是Java 8 Time的前身
Java 8的时间类主要在java.time包下面,主要会使用到的类有
LocalDateTime
LocalDate
LocalTime
ZonedDateTime
LocalDate
代表的是本地日期,例如2019-11-11
LocalTime
代表的是本地的时间,例如11:11:11
LocalDateTime
= LocalDate
+ LocalTime
,例如2019-11-11T11:11:11(默认的时间格式就是ISO-8601) 其实源码里LocalDateTime
类里就是保持了这2个对象
这四个类里,Local打头的都是不带时区的,只有
ZonedDateTime
带时区的
ZonedDateTime zonedDateTime = LocalDateTime.now().atZone(ZoneId.systemDefault());
zonedDateTime.toLocalDate();
zonedDateTime.toLocalDateTime();
zonedDateTime.toLocalTime();
我们可以通过LocalDateTime
+ 一个时区转换到ZonedDateTime
,如上面第一行所示
也可以通过ZonedDateTime
直接转换到LocalDateTime
未完待续!!!