JAVA8 localDate的简单使用

JAVA8 localDate的简单使用

测试代码
package com.mutouren.user.controller;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.ValueRange;

@SuppressWarnings("all")
public class DateTest {
    public static void main(String[] args) {
        //获取当前日期
        LocalDate localDate = LocalDate.now();  //2021-03-15
        //格式化日期
        String format = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//2021-03-15
        //日期加2两天     正数代表加   负数代表减
        LocalDate plusDays = localDate.plusDays(2L);//2021-03-17
        //日期加2个月     正数代表加   负数代表减
        LocalDate plusMonths = localDate.plusMonths(2L);//2021-05-15
        //日期减一周     正数代表加   负数代表减
        LocalDate plusWeeks = localDate.plusWeeks(-1L);//2021-03-08
        //日期减一年    正数代表加   负数代表减
        LocalDate plusYears = localDate.plusYears(-1L);//2020-03-15


        //通用日期算法    第一个参数是加减日期的数值,第二个参数是在日期的哪个量级进行操作
        localDate.plus(-1, ChronoUnit.DAYS);


        //计算两个时间间隔多少年多少月 多少日
        intervalYearAndMonthAndDay();
        //计算间隔了多少年 或 多少月  或 多少天
        intervalDays();

        //获取本月第一天
        LocalDate date = localDate.with(TemporalAdjusters.firstDayOfMonth());//2021-03-01

        //下个月第一天
        LocalDate date1 = localDate.with(TemporalAdjusters.firstDayOfNextMonth());//2021-04-01
        //明年第一天
        LocalDate date2 = localDate.with(TemporalAdjusters.firstDayOfNextYear());//2022-01-01
        //本年第一天
        LocalDate date3 = localDate.with(TemporalAdjusters.firstDayOfYear());//2021-01-01
        //本月最后一天
        LocalDate date4 = localDate.with(TemporalAdjusters.lastDayOfMonth());//2021-03-31

        //本年最后一天
        LocalDate date5 = localDate.with(TemporalAdjusters.lastDayOfYear());//2021-12-31

        //从本月算的第一个周五    正数从月初往后算   负数从月末往前算
        //参数一:  第几个
        //参数二:  周几
        LocalDate date6 = localDate.with(TemporalAdjusters.dayOfWeekInMonth(-9, DayOfWeek.FRIDAY));
        //本月的第一个周五
        LocalDate date7 = localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.FRIDAY));
        //本月的最后一个周五
        LocalDate date8 = localDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY));
        //下一个周五
        LocalDate date9 = localDate.with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
        //从今往后最近的一个周五
        LocalDate date10 = localDate.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));
        //上一个周五
        LocalDate date11 = localDate.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
        //从今往前最近的一个周五
        LocalDate date12 = localDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.FRIDAY));

        //获取本月的第几天
        LocalDate withDayOfMonth = localDate.withDayOfMonth(4);//2021-03-04

        //获取此日期具体的时间
        LocalDateTime localDateTime = localDate.atTime(1, 3);

        //先比较年份  年份不同则返回差值  年份相同比较月份  月份不同返回月份的差值
        //月份相同比较天数  天数不同返回天数的差值 天数也一样 则返回0
        int i = localDate.compareTo(LocalDate.parse("2021-03-15"));


        //判断两个值是否一致   包括类型
        boolean equals = localDate.equals(LocalDate.parse("2021-03-15"));

        //本月的第几天
        int dayOfMonth = localDate.getDayOfMonth();
        //周几
        DayOfWeek dayOfWeek = localDate.getDayOfWeek();
        //今年的第几天
        int dayOfYear = localDate.getDayOfYear();

        //几月
        Month month = localDate.getMonth();
        //几月数字
        int monthValue = localDate.getMonthValue();

        //该日期是否在  2020-01-09  之后
        boolean after = localDate.isAfter(LocalDate.parse("2020-01-09"));
        //该日期是否在  2020-01-09  之前
        boolean before = localDate.isBefore(LocalDate.parse("2020-01-09"));
        //该日期是否和2021-03-15  相等
        boolean equal = localDate.isEqual(LocalDate.parse("2021-03-15"));
        //该日期是否是闰年
        boolean leapYear = localDate.isLeapYear();

        //本月天数
        int lengthOfMonth = localDate.lengthOfMonth();
        //本年天数
        int lengthOfYear = localDate.lengthOfYear();

        //减去指定的天数   还有月 周 年
        LocalDate localDate1 = localDate.minusDays(2);

        //初始化日期
        LocalDate of = LocalDate.of(2021, 1, 1);


        //返回改日期在某个时间段内的校验结果 比如  一年的周数从1-53
        ValueRange range = localDate.range(ChronoField.ALIGNED_WEEK_OF_YEAR);

        //本年的第几天
        LocalDate localDate2 = localDate.withDayOfYear(5);
        //本年第4个月的今天
        LocalDate localDate3 = localDate.withMonth(4);
        //2021年的本月本日
        LocalDate localDate4 = localDate.withYear(2021);


    }

    private static void intervalDays() {
        LocalDate localDate1 = LocalDate.parse("2015-08-28");
        LocalDate LocalDate2 = LocalDate.parse("2021-09-30");
        //localDate1  到   LocalDate2 隔了多少年
        long years = localDate1.until(LocalDate2, ChronoUnit.YEARS);
        System.out.println("years = " + years);//6
        //localDate1  到   LocalDate2 隔了多少月
        long months = localDate1.until(LocalDate2, ChronoUnit.MONTHS);
        System.out.println("months = " + months);//73
        //localDate1  到   LocalDate2 隔了多少天
        long days = localDate1.until(LocalDate2, ChronoUnit.DAYS);
        System.out.println("days = " + days);//2225
    }

    private static void intervalYearAndMonthAndDay() {
        LocalDate localDate1 = LocalDate.parse("2015-08-28");
        LocalDate LocalDate2 = LocalDate.parse("2021-09-30");
        //localDate1  的日期到localDate2的日期    因此数小的日期在前面
        int years = localDate1.until(LocalDate2).getYears();
        int months = localDate1.until(LocalDate2).getMonths();
        int days = localDate1.until(LocalDate2).getDays();
        System.out.println("间隔:" + years + " 年" + months + " 个月 " + days + " 天");//6 年1 个月 2 天
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值