前言
在我们用数据库中的时间字段时,Java对应的实体类是Date类型,但如果你使用的是jdk1.8,会发现在使用之前的Date(year,month,day)这样的构造方法的时候出现过时的字样.而LocalDate就是Java1.8中的新时间字段,可以支持数据库中的Date类型.不过限制条件就是mysql的驱动器的版本不能低于4.2
同样的,除LocalDate以外还有LocalDateTime和LocalTime.分别对应数据库中的dateTime和time类型.
一、为什么放弃Date类型
用过Date类型的应该都知道,只是单纯的用new Date()存数据库还好,可一旦Date的构造方法或者它的set方法,就必须接受年从1900开始,月的范围则是0~11,这样的入参让人觉得很反人类.如果调用getYear()的话得到的参数得到的则是year – 1900的结果.但是LocalDate输入的是什么,得到的输出就是什么.
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(date.getYear());
//2019-01-10
Date date1 = new Date(2019 - 1900, 2 - 1,10);
System.out.println("date1:" + date1);
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
}
二、LocalDate的使用
和new Date() 意义相同的方法: LocalDate.now(); 获取当前时间
取相应的年月日;getYear(); getMonthValue(); getDayOfMonth();
创建一个距离已知对象(日期)n天的新对象(日期):plusDays()方法
创建一个指定年份,月份,和日的对象:of(year,month,day)方法.
示例(eg):
public static void main(String[] args) {
LocalDate date1 = LocalDate.now();
System.out.println("date1:" + date1);
System.out.println("year:" + date1.getYear() + ",month:" + date1.getMonthValue()
+ ",day:" + date1.getDayOfMonth());
LocalDate date2 = LocalDate.of(2007,1,13);
System.out.println("date2:" + date2);
System.out.println("plus10:" + date1.plusDays(10));
}
版权声明:本文为shenshaoming原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。