LocalDateTime转换Date 日期比较 日期相差天数

  • 1、LocalDateTime转Date
// 从默认时区的系统时钟获取当前的日期时间
LocalDateTime localDateTime = LocalDateTime.now();
// 将此日期时间与时区相结合以创建 ZonedDateTime
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
// 本地时间线LocalDateTime到即时时间线Instant时间戳
Instant instant = zonedDateTime.toInstant();
// UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
Date date = Date.from(instant);

System.out.println("localDateTime: " + localDateTime);
System.out.println("zonedDateTime: " + zonedDateTime);
System.out.println("instant: " + instant);
System.out.println("date: " + date);

执行结果:

localDateTime: 2021-11-30T14:50:50.188
zonedDateTime: 2021-11-30T14:50:50.188+08:00[Asia/Shanghai]
instant: 2021-11-30T06:50:50.188Z
date: Tue Nov 30 14:50:50 CST 2021

  • 2、Date转LocalDateTime
// Date转LocalDate
Date date = new Date();
// 转为时间戳
Instant instant = date.toInstant();
// UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println("date: " + date);
System.out.println("instant: " + instant);
System.out.println("localDateTime: " + localDateTime);

执行结果:

date:Tue Nov 30 15:28:39 CST 2021
instant:2021-11-30T07:28:39.994Z
localDateTime:2021-11-30T15:28:39.994

  • 3、LocalDateTime格式化日期
(1)日期字符串转LocalDateTime转Date
        // 日期字符串转LocalDateTime
        String today = "2021-11-30 15:28:39";
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 转为自定义格式
        LocalDateTime localDateTime = LocalDateTime.parse(today, dateTimeFormatter);
        String format = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(localDateTime);
        System.out.println("localDateTime:" + localDateTime);
        System.out.println("自定义格式:" + format);

        // LocalDateTime转Date
        Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
        System.out.println("date:" + date);

执行结果:
localDateTime:2021-11-30T15:28:39
自定义格式:20211130
date:Tue Nov 30 15:28:39 CST 2021

(2)日期字符串转LocalDate转Date

   // 日期字符串转LocalDate
    String tomorrow = "2021-12-01";
    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    LocalDate localDate = LocalDate.parse(tomorrow, dateFormatter);
    System.out.println("localDate:" + localDate);

    // LocalDate转Date,需要使用atStartOfDay
    // 因为Date有时间,LocalDate没有时间,需要LocalDate与00:00:00时间相结合
    Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
    System.out.println("date:" + date);

执行结果:

localDate:2021-12-01
date:Wed Dec 01 00:00:00 CST 2021

  • 4、LocalDate日期比较
LocalDate startDate = LocalDate.of(2021, 11, 30);
LocalDate today = LocalDate.now();

boolean before = startDate.isBefore(today);
boolean after = startDate.isAfter(today);
boolean equal = startDate.isEqual(today);
System.out.println(before ? "开始日期大于当前日期":"开始日期不大于当前日期");
System.out.println(after ? "开始日期大于当前日期":"开始日期不大于当前日期");
System.out.println(equal ? "开始日期等于当前日期":"开始日期不等于当前日期");

执行结果:

开始日期不大于当前日期
开始日期不大于当前日期
开始日期等于当前日期

  • 5、LocalDate日期增加或减少
// 增加天、周、月、年,ChronoUnit标准的日期单位
LocalDate today = LocalDate.now();

LocalDate nextDays = today.minus(1, ChronoUnit.DAYS);
System.out.println(nextDays);

LocalDate nextWeeks = today.plus(1, ChronoUnit.WEEKS);
System.out.println(nextWeeks);

LocalDate nextMonths = today.plus(1, ChronoUnit.MONTHS);
System.out.println(nextMonths);

LocalDate nextYears = today.plus(1, ChronoUnit.YEARS);
System.out.println(nextYears);

执行结果:

2021-11-29
2021-12-07
2021-12-30
2022-11-30

  • 6、两个日期之间相差的年月日

// 两个日期之间相差的年月日

LocalDate startDate = LocalDate.of(2020, 11, 30);
LocalDate endDate = LocalDate.of(2021, 12, 30);
long years = startDate.until(endDate, ChronoUnit.YEARS);
long month = startDate.until(endDate, ChronoUnit.MONTHS);
long day = startDate.until(endDate, ChronoUnit.DAYS);
System.out.println("years:" + years);
System.out.println("month:" + month);
System.out.println("day:" + day);

执行结果:

years:1
month:13
day:395

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值