美文网首页
LocalDate 获取当前日期相关的时间

LocalDate 获取当前日期相关的时间

作者: 烟凉楼亭雨 | 来源:发表于2023-06-29 15:57 被阅读0次

根据业务需要获取指定的月份区间,每月底有一个触发时间点,需要获取到该时间点前一周的周日作为结束时间,而开始时间则以上一个月的相同时间点所在周的周一做为开始时间。

代码如下:

        LocalDate localDate = LocalDate.now();
        System.out.println("当前时间:"+localDate);
        LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
        LocalDate firstDayMonth = firstDayOfMonth.with(DayOfWeek.MONDAY);
        System.out.println("每月1号的周所在周的周一:"+firstDayMonth);
        LocalDate firstDay = localDate.with(DayOfWeek.MONDAY);
        System.out.println("当前周周一:"+firstDay+" 00:00:00");
        LocalDate firstMonday = localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
        System.out.println("当前月第一周周一:"+firstMonday+" 00:00:00");
        LocalDate lastSunday = localDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY));
        System.out.println("当前月最后一个周日:"+lastSunday+" 23:59:59");
        LocalDate May=localDate.minusMonths(1);
        LocalDate April=localDate.minusMonths(2);
        LocalDate March=localDate.minusMonths(3);
        LocalDate Feb=localDate.minusMonths(4);
        LocalDate Jan=localDate.minusMonths(5);
        System.out.println("五月:"+May+" 四月:"+April+" 三月:"+March+" 二月:"+Feb+" 一月:"+Jan);
        // 获取上个月的最后一个周三所在周的周一 -- 开始时间
        // 获取上一个月
        LocalDate lastMonth = localDate.minusMonths(1);
        System.out.println("前一个月的最后一天:"+lastMonth);
        LocalDate lastMonthofLastWednsday = lastMonth.with(TemporalAdjusters.lastInMonth(DayOfWeek.WEDNESDAY));
        System.out.println("前一个月最后一个周三:"+lastSunday+" 23:59:59");
        LocalDate lastMonthOfMonday = lastMonthofLastWednsday.with(TemporalAdjusters.previous(DayOfWeek.MONDAY)).plusDays(1);
        LocalDate lastMonthOdMondayNew = lastMonthofLastWednsday.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
        System.out.println("前一个月最后一个周三的周一:"+lastMonthOfMonday+","+lastMonthOdMondayNew);
        // 当前月的最后一个周三所在周的上周的周日 --结束时间
        LocalDate lastWednsday = localDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.WEDNESDAY));
        System.out.println("当前月最后一个周三:"+lastWednsday+" 23:59:59");
        // 最后一个周三的上一周的周三
        LocalDate lastSecondWednsday = lastWednsday.minusDays(7);
        System.out.println("当月最后一个周三的上周三:"+lastSecondWednsday);
        LocalDate lastSecondSunday = lastSecondWednsday.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).minusDays(1);
        LocalDate lastSecondSundayNew = lastSecondWednsday.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
        System.out.println("当前月最后一个周三的上周日:"+lastSecondSunday+","+lastSecondSundayNew);
        LocalDate lastWednsdayOfMonday = lastWednsday.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
        System.out.println("当前月最后一个周三所在周的周一:"+lastWednsdayOfMonday);
        LocalDate wednsday = localDate.with(DayOfWeek.WEDNESDAY);
        if(localDate.equals(wednsday)) {
            System.out.println("同一天!");
        }

运行结果如下:


运行结果

纠正:
lastMonthOfMonday 获取的日期并非是当前时间前一个月最后一个周三的周一
lastSecondSunday 获取的日期也并非是当前时间的最后一个周三的上周日

相关文章

网友评论

      本文标题:LocalDate 获取当前日期相关的时间

      本文链接:https://www.haomeiwen.com/subject/lrzaydtx.html