日历算法,计算每个月当前周到周日,不计算下个月日期

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class week {
public static void main(String[] args) {
LocalDate customDate = LocalDate.of(2023, 9, 1); // 自定义日期

    LocalDate date = customDate; // 当前日期

    // 如果当前月的1号不是周一,则计算当前周的范围
    if (date.getDayOfWeek() != DayOfWeek.MONDAY) {
        LocalDate endOfWeek = date.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));

        // 如果结束日期超过当前月份,则将其调整为当前月份的最后一天
        if (endOfWeek.getMonthValue() > date.getMonthValue()) {
            endOfWeek = date.with(TemporalAdjusters.lastDayOfMonth());
        }

        System.out.println("Week " + date + " to " + endOfWeek);
        date = endOfWeek.plusDays(1); // 更新日期为下一周的起始日期
    }

    // 循环计算剩余周的范围
    while (date.getMonthValue() == customDate.getMonthValue()) {
        LocalDate startOfWeek = date.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
        LocalDate endOfWeek = date.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));

        // 如果结束日期超过当前月份,则将其调整为当前月份的最后一天并中断循环
        if (endOfWeek.getMonthValue() > customDate.getMonthValue()) {
            endOfWeek = customDate.with(TemporalAdjusters.lastDayOfMonth());
            System.out.println("Week " + startOfWeek + " to " + endOfWeek);
            break;
        }

        System.out.println("Week " + startOfWeek + " to " + endOfWeek);
        date = endOfWeek.plusDays(1);
    }
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值