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

Java1.8中,传统的Date类型因其构造方法和API设计不合理而逐渐被弃用,转而推荐使用LocalDate。LocalDate适合于处理数据库中的Date类型,前提为MySQL驱动版本不低于4.2。本文探讨了Date类型的问题,并详细介绍了LocalDate的使用,包括now()获取当前时间、getYear()等获取日期属性以及plusDays()、of()等创建日期的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值