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

前言

在我们用数据库中的时间字段时,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)方法.

    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));
    }

在这里插入图片描述

Date和LocalDate互相转换的工具类

Date和LocalDate互相转换的工具类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值