为什么要使用JDK8时间类?
JDK7中常用的时间类
在JDK7中时间类有Date,SimpleDateFormat,Calendar。
代码层面区别
在代码层面上来说,JDK7中处理数据的代码有一些麻烦,例如我们比较或计算时间的时候,我们都需要将时间getTime或者getTimeInMillis来获取毫秒值进行比较,但是在JDK8中,提供了一些方法可以方便的进行操作,我们可以使用isBefore或者isAfter来进行比较,也可以使用工具类Period,Duration,ChronoUnit来进行计算的操作。
安全层面区别
在JDK7中,多线程环境下会导致数据的安全问题。
因为在JDK7中,时间对象是可以被修改的,举一个很简单的栗子:
奶茶一元奶茶的活动时间为2023年2月11日。
路人A:想要把时间修改为2023年2月12日。
路人B:希望把时间修改为2023年2月13日。
那么在这个时候问题就来了,那么这个活动时间将会修改为什么?
所以JDK7在这个事情上会出现这种问题。
JDK8中,时间日期对象都是不可以被修改了,是不可变的。间接的解决了这个问题
JDK8常用的时间类
JDK8中常用的10个,分为4种:
时间类:ZoneId 时区,Instant时间戳,ZonedDateTime带时区的时间
格式化类:DateTimeFormatter
日历类:LocalDate,LocalTime,LocalDateTime
工具类:Period,Duration,ChronoUnit
总结
OvO