1、Java8 Date/Time API相关的类:LocalDate,LocalTime,LocalDateTime,这三个类有一个公共特点就是同String类一样,都是密封类(final修饰),不允许继承(都位于java.time包下)
他们都有什么区别呢?
2、Java8之前我们常用 SimpleDateFormat dateformat = new SimpleDateFormat(new Date()); 的方式来格式化时间,程序中出现大量的SimpleDateFormat类,既不简洁实用,造成代码臃肿,而且可读性非常低
3、Java8以前使用new Date()获取月时,从0开始,每次都要+1。获取本月最后一天,要分情况判断28,29,30,31。非常麻烦,代码量非常繁琐。现使用Java8中的Date/Time API,问题都解决了!
public class DateTimeAPI{
public static void main(String... args) {
LocalDate.now(); // 获取当前日期 format: yyyy-MM-dd
LocalTime.now(); // 获取当前时间 format: HH:mm:ss
LocalDateTime.now(); // 获取当前日期时间 format: yyyy-MM-dd HH:mm:ss
}
}
以上是对当前日期的获取,比较三者的输出(print console:)有什么区别:
print console:
2019-03-21
15:14:01.341
2019-03-21T15:14:01.341
Process finished with exit code 0
类方法:
1、LocalDate nowDate = LocalDate.now(); 获取当前日期:2019-03-21
2、LocalDate formatDate = LocalDate.parse("2018-08-08"); 自定义时间:2018-08-08
实例方法:
1、nowDate.getDayOfMonth() :21 (获取当天所属本月中的第几天)
2、nowDate.getDayOfYear() :80 (获取当天所属本年中的第几天)
3、nowDate.getDayOfWeek() :THURSDAY (获取当天所属本周的周几)
nowDate.getDayOfWeek() .getValue() :4
4、nowDate.getMonth() :MARCH (获取当月所属本年的第几月,与new Date() 相比它是从1开始,抛弃了之前的从0开始)
nowDate.getMonth().getVlue():3
nowDate.getMonthVlue() :3
5、nowDate.getYear() :2019 (获取年)
6、nowDate.getEra() :CE (获取次日期适用的时代)
7、nowDate.with(TemporalAdjusters.firstDayOfMonth()) :2019-03-01(获取本月第一天)
8、nowDate.withDayOfMonth(2) :2019-03-02(获取本月第二天)
9、nowDate.with(TemporalAdjusters.lastDayOfMonth()) :2019-03-01(获取本月最后一天,无须再判断28、29、30、31)
10、nowDate.plusDays(1) :2019-03-22(获取下一天日期)
注:TemporalAdjusters类中有许多常用的特殊的日期的方法(类方法),使用时可以仔细查看,可以很大程度减少日期判断的代码量!
类方法:
LocalTime nowTime = LocalTime.now(); 获取当前时间:16:45:51.591
实例方法:
1、nowTime.getHour() :16(获取小时数)
2、nowTime.getMinute() :45(获取分钟数)
3、nowTime.getSecond() :51(获取秒数)
4、nowTime.getNano() :805000000(获取纳秒数)
5、LocalTime zero = LocalTime.of(0, 0, 0) :00:00:00 (构建自定义时间)
LocalTime mid = LocalTime.parse("12:00:00") : 12:00:00
类方法:
1、LocalDateTime nowDateTime = LocalDateTime.now(); 获取当前日期时间:2019-03-21T16:45:51.591
2、DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String nowDateTime = LocalDateTime.now().format(formatter);
使用自定义格式器DateTimeFormatter替换了Java8之前的SimpleDateFormat
实例方法:基于上方LocalDate与LocalTime的实例方法,名字相同,可直接调用
最新的JDBC整合了Java8中的Date/Time API,将Java8中的Date/Time类型与数据库类型进行了映射
数据库类型 -> Java类型
date -> LocalDate
time -> LocalTime
timestamp -> LocalDateTime