美文网首页
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