老版本的date类,calendar类如何转换成jdk1.8 time类

  1. 老版本中java.util.Date转化为LocalDate
        //老项目中data类
        Date d = new Date();
        //jdk8中的Instant类
        Instant i =  d.toInstant();
        //添加时区
        ZonedDateTime zonedDateTime = i.atZone(ZoneId.systemDefault());
        //将ZonedDateTime转化为localDate
        LocalDate localDate = zonedDateTime.toLocalDate();
        System.out.println(d);
        System.out.println(localDate);

在这里插入图片描述

2.老版本的java.sql.Date转化为LocalDate

//初始化sql.data类
        Date date = new Date(System.currentTimeMillis());
        //java.sql.Date;类中自带toLocalDate
        LocalDate localDate = date.toLocalDate();
        System.out.println(date);
        System.out.println(localDate);

在这里插入图片描述
sql.date类只需要在初始化的时候加上currentTimeMillis,然后调用自带的toLocalDate方法就可以了

3.java.sql.Timestamp类中也自带了toLocalDateTime方法,只要加上当前时间

Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        LocalDateTime localDateTime = timestamp.toLocalDateTime();
        System.out.println(timestamp);
        System.out.println(localDateTime);

在这里插入图片描述
4.util.date 通过转化为sql.date类,然后调用tolocaldate方法

		//这是util.date类型的Date
		Date date = new Date();
        java.sql.Date date1 = new java.sql.Date(date.getTime());
        LocalDate localDate = date1.toLocalDate();
        System.out.println(date);
        System.out.println(localDate);

5.calendar类转化为time

//1 . 初始calender
        Calendar calendar = Calendar.getInstance();
        //2 获取calendar中的时区
        TimeZone timeZone = calendar.getTimeZone();
        //3 .jdk1.8 开始TimeZone类提供一个方法获取ZoneId对象
        ZoneId zoneId = timeZone.toZoneId();
        //4. 用获取到ZoneId对象和calendar的toInstant方法构建ZoneDateTime
        ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(calendar.toInstant(), zoneId);
        System.out.println(calendar);
        System.out.println(zonedDateTime);

在这里插入图片描述
如果腰获得LocalTime,只需要调用ZonedDateTime的toLocalTime方法
在这里插入图片描述在这里插入图片描述

之所以要转化为jdk1.8的time类是因为新的时间类提供了更多方便的方法。具体可以查看LocalDate 、LocalDateTime、ZonedDateTime的源码,里边有许多plus、with方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值