深入了解 JDK8 LocalDateTime/LocalDate/LocalTime 相互转换

1 篇文章 0 订阅
1 篇文章 0 订阅

深入了解 JDK8 LocalDateTime/LocalDate/LocalTime 相互转换

基本用法

    public void localDateTime() {
        LocalDate localDate = LocalDate.now();
        System.out.println("LocalDate==》" + localDate);//2021-05-31
        System.out.println("getDayOfMonth==》" + localDate.getDayOfMonth());//31
        System.out.println("getChronology==》" + localDate.getChronology());//ISO
        System.out.println("getDayOfWeek==》" + localDate.getDayOfWeek());//MONDAY
        System.out.println("getDayOfYear==》" + localDate.getDayOfYear());//151
        System.out.println("getEra==》" + localDate.getEra());//CE
        System.out.println("getMonth==》" + localDate.getMonth());//MAY
        System.out.println("getMonthValue==》" + localDate.getMonthValue());//5
        System.out.println("getYear==》" + localDate.getYear());//2021
        System.out.println("parse string 转换为 LocalDate ==》" + LocalDate.parse("2020-10-10"));
        System.out.println("format LocalDate 转换为 string ==》" + localDate.format(DateTimeFormatter.ofPattern("yyyy-MM")));
        System.out.println("format LocalDate 转换为 string ==》" + localDate.toString());

        System.out.println("plusDays 明天 ==》" + localDate.plusDays(1));
        System.out.println("plusMonths 下个月 ==》 " + localDate.plusMonths(1));
        System.out.println("plusWeeks 下一周 ==》 " + localDate.plusWeeks(1));
        System.out.println("plusYears 下一年 ==》 " + localDate.plusYears(1));

        System.out.println("minusDays 昨天==》" + localDate.minusDays(1));
        System.out.println("minusMonths 上个月==》 " + localDate.minusMonths(1));
        System.out.println("minusWeeks 上一周==》 " + localDate.minusWeeks(1));
        System.out.println("minusYears 上一年 ==》 " + localDate.minusYears(1));


        LocalTime localTime = LocalTime.now();
        System.out.println("LocalTime——》" + localTime);//19:58:59.562296
        System.out.println("getHour==》" + localTime.getHour());//19
        System.out.println("getMinute==》" + localTime.getMinute());//58
        System.out.println("getNano==》" + localTime.getNano());//562296000
        System.out.println("getSecond==》" + localTime.getSecond());//59
        System.out.println("toNanoOfDay==》" + localTime.toNanoOfDay());//71939562296000
        System.out.println("toSecondOfDay==》" + localTime.toSecondOfDay());//71939
        System.out.println("parse==》" + LocalTime.parse("20:10:10"));
        System.out.println("format==》" + localTime.format(DateTimeFormatter.ofPattern("hh:mm:ss")));

        System.out.println("plusHours==》" + localTime.plusHours(1));//19:58:59.562296
        System.out.println("plusMinutes==》" + localTime.plusMinutes(1));//19
        System.out.println("plusNanos==》" + localTime.plusNanos(1));//58
        System.out.println("plusSeconds==》" + localTime.plusSeconds(1));//562296000

        System.out.println("minusHours==》" + localTime.minusHours(1));//19:58:59.562296
        System.out.println("minusMinutes==》" + localTime.minusMinutes(1));//19
        System.out.println("minusNanos==》" + localTime.minusNanos(1));//58
        System.out.println("minusSeconds==》" + localTime.minusSeconds(1));//562296000

        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("localDateTime==》" + localDateTime);//2021-05-31T20:04:18.764
        System.out.println("getDayOfMonth==》" + localDateTime.getDayOfMonth());//31
        System.out.println("getChronology==》" + localDateTime.getChronology());//ISO
        System.out.println("getDayOfWeek==》" + localDateTime.getDayOfWeek());//MONDAY
        System.out.println("getDayOfYear==》" + localDateTime.getDayOfYear());//151
        System.out.println("getMonth==》" + localDateTime.getMonth());//MAY
        System.out.println("getMonthValue==》" + localDateTime.getMonthValue());//5
        System.out.println("getYear==》" + localDateTime.getYear());//2021
        System.out.println("parse==》" + LocalDateTime.parse("2021-05-31T20:04:18.764"));
        System.out.println("format==》" + localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")));

        System.out.println("plusSeconds->" + localDateTime.plusSeconds(1));
        System.out.println("plusMinutes->" + localDateTime.plusMinutes(1));
        System.out.println("plusHours->" + localDateTime.plusHours(1));
        System.out.println("plusDays->" + localDateTime.plusDays(1));
        System.out.println("plusWeeks->" + localDateTime.plusWeeks(1));
        System.out.println("plusMonths->" + localDateTime.plusMonths(1));
        System.out.println("plusYears->" + localDateTime.plusYears(1));

        System.out.println("minusSeconds->" + localDateTime.minusSeconds(1));
        System.out.println("minusMinutes->" + localDateTime.minusMinutes(1));
        System.out.println("minusHours->" + localDateTime.minusHours(1));
        System.out.println("minusDays->" + localDateTime.minusDays(1));
        System.out.println("minusWeeks->" + localDateTime.minusWeeks(1));
        System.out.println("minusMonths->" + localDateTime.minusMonths(1));
        System.out.println("minusYears->" + localDateTime.minusYears(1));


    }

获取年月周天的最大最小日期

 public void maxAndMinDate() {
        LocalDate localDate = LocalDate.now();//2021-06-03
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        int i = calendar.get(Calendar.WEEK_OF_MONTH);//获取当前时间在本月是第几周

        //当天的最大时间、与最小时间
        String maxDay = LocalDateTime.of(localDate, LocalTime.MAX).format(timeFormatter);
        System.out.println("maxDay:" + maxDay);//2021-06-03 23:59:59
        String minDay = LocalDateTime.of(localDate, LocalTime.MIN).format(timeFormatter);
        System.out.println("minDay:" + minDay);//2021-06-03 00:00:00
        //日历式的第几周
        //本周的周一、周天    根据 ordinal 的值 取的当月的第几周,1为第一周......  -1为最后一周
        String maxWeek = LocalDateTime.of(localDate.with(TemporalAdjusters.dayOfWeekInMonth(i, DayOfWeek.SUNDAY)),
                LocalTime.MAX).format(timeFormatter);
        System.out.println("maxWeek:" + maxWeek);//2021-06-30 23:59:59

        String minWeek = LocalDateTime.of(localDate.with(TemporalAdjusters.dayOfWeekInMonth(i - 1, DayOfWeek.MONDAY)),
                LocalTime.MIN).format(timeFormatter);
        System.out.println("minWeek:" + minWeek);//2021-06-01 00:00:00

        //本月的最大时间、与最小时间
        String maxMonth = LocalDateTime.of(localDate.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX).format(timeFormatter);
        System.out.println("maxMonth:" + maxMonth);//2021-06-30 23:59:59
        String minMonth = LocalDateTime.of(localDate.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN).format(timeFormatter);
        System.out.println("minMonth:" + minMonth);//2021-06-01 00:00:00

        //本年的最大时间、与最小时间
        String lastDayOfYear = LocalDateTime.of(localDate.with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX).format(timeFormatter);
        System.out.println("lastDayOfYear:" + lastDayOfYear);//2021-12-31 23:59:59
        String firstDayOfYear = LocalDateTime.of(localDate.with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN).format(timeFormatter);
        System.out.println("firstDayOfYear:" + firstDayOfYear);//2021-01-01 00:00:00
    }

相互转换

public void conversion() {
        //LocalDate -> Date
        ZonedDateTime zonedDateTime = LocalDate.now().atStartOfDay(ZoneId.systemDefault());
        Date localDateToDate = Date.from(zonedDateTime.toInstant());
        System.out.println("localDateToDate->" + localDateToDate);//Mon Jun 07 00:00:00 CST 2021

        //LocalDateTime -> Date
        ZonedDateTime atZone = LocalDateTime.now().atZone(ZoneId.systemDefault());
        Date LocalDateTimeToDate = Date.from(atZone.toInstant());
        System.out.println("LocalDateTimeToDate->" + LocalDateTimeToDate);//Mon Jun 07 14:35:10 CST 2021

        //localTime -> Date
        LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        Date LocalTimeToDate = Date.from(instant);
        System.out.println("LocalTimeToDate->" + LocalTimeToDate);//Mon Jun 07 14:35:10 CST 2021

        //Date -> toLocalDate
        LocalDate toLocalDate = localDateToDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        System.out.println("toLocalDate->" + toLocalDate);//2021-06-07

        //Date -> toLocalDateTime
        LocalDateTime toLocalDateTime = LocalDateTimeToDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println("toLocalDateTime->" + toLocalDateTime);//2021-06-07T14:35:10.264

        //Date -> toLocalTime
        LocalTime toLocalTime = LocalDateTimeToDate.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
        System.out.println("toLocalTime->" + toLocalTime);//14:35:10.264
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值