Java1.8中的Date为何过时以及LocalDate的使用

  • Post author:
  • Post category:java


前言

在我们用数据库中的时间字段时,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 版权协议,转载请附上原文出处链接和本声明。