Date LocalDate LocalDateTime的转换使用

最近项目经常使用到JDK1.8中LocalDate LocalDateTime的时间转换问题,记录一下:

Date 转 LocalDate

		Date date = new Date();
		Instant instant = date.toInstant(); // 时间戳
        ZoneId zoneId = ZoneId.systemDefault(); // 时区
        ZonedDateTime zonedDateTime = instant.atZone(zoneId); // 特定时区对应的日期时间
        LocalDate localDate = zonedDateTime.toLocalDate();
        
		date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate 转 Date

		LocalDate localDate = LocalDate.now();
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = localDate.atStartOfDay(zoneId);
        Date date = Date.from(zdt.toInstant());
        
补充LocalDate用到的一些方法:
		LocalDate firstLocalDate = localDate.with(TemporalAdjusters.firstDayOfMonth());// 获取月第一天
        LocalDate lastLocalDate = localDate.with(TemporalAdjusters.lastDayOfMonth());// 获取月最后一天
        long dateDiff = endLocalDate.toEpochDay() - startLocalDate.toEpochDay();// 获取两个日期相差天数
        localDate.minusDays(1);//日期减一天
        localDate.plusDays(1);//日期加一天

Date 转 LocalDateTime

		Date date = new Date();
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();

LocalDateTime 转 Date

		LocalDateTime localDateTime = LocalDateTime.now();
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = localDateTime.atZone(zoneId);
        Date date = Date.from(zdt.toInstant());

LocalDate LocalDateTime 和字符串时间转换

		DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate localDate = LocalDate.now();
        String localDateStr = localDate.format(dtf1);
        LocalDate localDate1 = LocalDate.parse("2020-07-20", dtf1);

        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.now();
        String localDateTimeStr = localDateTime.format(dtf2);
        LocalDateTime localDateTime1 = localDateTime.parse("2020-07-20 20:30:00", dtf2);

补充:ChronoUnit类计算时间差

long day1= ChronoUnit.DAYS.between(LocalDate.now(), LocalDate.of(2021, 4, 11));
long day2 = ChronoUnit.DAYS.between(LocalDateTime.now(), LocalDateTime.of(2021, 5, 10, 12, 00));
long min= ChronoUnit.MINUTES.between(LocalDateTime.now(), LocalDateTime.of(2021, 4, 10, 12, 00));
long seconds = ChronoUnit.SECONDS.between(LocalDateTime.now(), LocalDateTime.of(2021, 4, 10, 12, 00));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值