Jdk1.8以前与时间相关的类有java.util.Date,java.spl.Date,calendar,SimpleDateFormat,其中的java.util.Date是java.sql.Date的父类,Date类里面有很多方法都已经过时,原因是使用Date中的方法不太好用,第一点是Date类的可变性:时间类的对象应该是不可变的;第二点是它的偏移性:Date类获取到的年份是当前系统年份减去1900,也就是说你用Date类的getYear()获取到的数字还要加上1900,而获取到的月份的方法返回的数字还得加1(月份从零开始);格式化:格式化只对Date有用,Calender则不行。
这设计烂爆了,于是乎,就诞生了许多与时间相关的第三方扩展,其中最饱受好评的就是我们现在用处于java.time包下的LocalDate,LocalDateTime,LocalTime等,于jdk1.8以后收编至java中,于之前的时间类相比,java.time包下的类都是线程安全,并且创建的对象是不可变的,且不用那么多繁琐的步骤就可以获得可读性高的日期字符串,关于日期的计算也很简单,也有许多预定义好的常量,一般场合方便使用。
格式化类:DateTimeFormatter
下面是DateTimeFormatter的预定义格式的使用:
这套api中的get,set等方法的使用和date大旧版的date大同小异,自己琢磨吧。此类实例化不可用new,它实例化的方法有两个,一个是通过点now()方法创建当前时间对象,
另一个是点of()方法,参数为每个时间单位你想设置的数字,逗号分隔,例如2022,10,22