wzbjluoyu

导航

Java8日期常用API

Java8 LocalDate常用API

每日

获取当前日期

        //获取当前系统所属时区的当前日期
        LocalDate now = LocalDate.now();
        //获取指定日期
        LocalDate date = LocalDate.of(2022, 10, 20);
        //获取指定时区的当前日期
        ZoneId zoneId = ZoneId.of("Africa/Cairo");
        LocalDate utc = LocalDate.now(zoneId);
        //获取指定年份指定天数的日期
        LocalDate ofYearDay = LocalDate.ofYearDay(2022, 100);

获取日期所属年份、月份、日期,第几周、星期几

        LocalDate date = LocalDate.now();
        //获取日期所属年份
        int year = date.getYear();
        System.out.println("当前日期所属年份:  " + year );
        //获取日期所属月份
        int monthValue = date.getMonthValue();
        System.out.println("当前日期所属月份:  " + monthValue );
        //获取日期所属月份的是几号
        int dayOfMonth = date.getDayOfMonth();
        System.out.println("当前日期是几号:  " + dayOfMonth);
        //获取日期在当前年份下是第几周
        int week = date.get(WeekFields.ISO.weekOfYear());
        System.out.println("当前日期是当前年份的第几周:  " + week);
        //获取日期是星期几   value值从 1至7 即周一到周日
        int dayOfWeek = date.getDayOfWeek().getValue();
        System.out.println("当前日期是星期[" + dayOfWeek + "]");

运行结果

日期比较

        LocalDate startDate = LocalDate.of(2022,11,1);
        LocalDate endDate = LocalDate.of(2022,11,5);

        //日期大小比较
        if(startDate.isBefore(endDate)) {
            System.out.println("2022-10-5 是在 2022-11-05之 【前】 的");
        }

        if(endDate.isAfter(startDate)) {
            System.out.println("2022-11-5 是在 2022-10-05之 【后】 的");
        }

        if(endDate.isEqual(LocalDate.of(2022,11,5))) {
            System.out.println("两个日期相等");
        }
        //获取两个仅相差一月以内的日期相差多少天  注意: 仅适用于两个日期相差一个月以内
        int result = Period.between(startDate, endDate).getDays();
        // 区分正负   如果要取绝对值  可用  Math.abs();
        if(result > 0) {
            System.out.println("endDate 大于StartDate");
        }
        if(result < 0) {
            System.out.println("endDate 小于StartDate");
        }
        //获取两个日期相差多少天    推荐使用
        long day = endDate.toEpochDay() - startDate.toEpochDay();

运行结果

每周

根据周获取日期

        //获取指定周,指定周几
        int year = 2022;   // 2022年
        int week  = 11;    // 11周
        DayOfWeek dayOfWeek = DayOfWeek.MONDAY;   // 周一
        //周数小于10在前面补个0
        String numStr = week < 10 ? "0" + week : String.valueOf(week);
        //2019-W01-01获取第一周的周一日期,2019-W02-07获取第二周的周日日期
        String weekDate = String.format("%s-W%s-%s", year, numStr, dayOfWeek.getValue());
        LocalDate date = LocalDate.parse(weekDate, DateTimeFormatter.ISO_WEEK_DATE);
        System.out.println(date);

运行结果

每月

        int year = 2022;
        int month = 2;
        // 获取指定年份的指定月份有多少天
        LocalDate date = LocalDate.of(year,month,1);
        int lengthOfMonth = date.lengthOfMonth();
        System.out.println("2022年2月有" + lengthOfMonth + "天");
        // 获取指定月的最后一天
        LocalDate monthLastDay = LocalDate.of(year, month, lengthOfMonth);

运行结果

posted on 2022-10-12 17:58  往之不谏,来之可追  阅读(135)  评论(0编辑  收藏  举报