Java 日期类 获取指定周的周一和周日

1. 整体流程

下面是实现获取指定周的周一和周日的整体流程:

步骤 描述
步骤 1 获取指定日期所在周的星期一的日期
步骤 2 获取指定日期所在周的星期日的日期
步骤 3 打印输出获取到的周一和周日的日期

2. 实现步骤

接下来,我们将逐步实现上述步骤,并提供相应的代码示例。

步骤 1: 获取指定日期所在周的星期一的日期

我们可以使用java.util.Calendar类来获取指定日期所在周的星期一的日期。下面是具体的代码示例:

import java.util.Calendar;

public class DateUtils {
    public static String getMondayOfTheWeek(String specifiedDate) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周的第一天为星期一
        calendar.setMinimalDaysInFirstWeek(1); // 设置每年的第一周最少包含的天数
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 设置为当前周的星期一
        calendar.set(Calendar.YEAR, Integer.parseInt(specifiedDate.substring(0, 4))); // 设置年份
        calendar.set(Calendar.WEEK_OF_YEAR, Integer.parseInt(specifiedDate.substring(5, 7))); // 设置周数
        return calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH);
    }
}

在上述代码中,我们通过Calendar类先获取当前的Calendar实例,然后设置每周的第一天为星期一,设置每年的第一周最少包含的天数为1。接着,我们将日历设置为指定日期所在周的星期一,并返回该日期。

步骤 2: 获取指定日期所在周的星期日的日期

同样地,我们可以使用java.util.Calendar类来获取指定日期所在周的星期日的日期。下面是具体的代码示例:

import java.util.Calendar;

public class DateUtils {
    public static String getSundayOfTheWeek(String specifiedDate) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周的第一天为星期一
        calendar.setMinimalDaysInFirstWeek(1); // 设置每年的第一周最少包含的天数
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 设置为当前周的星期日
        calendar.set(Calendar.YEAR, Integer.parseInt(specifiedDate.substring(0, 4))); // 设置年份
        calendar.set(Calendar.WEEK_OF_YEAR, Integer.parseInt(specifiedDate.substring(5, 7))); // 设置周数
        return calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH);
    }
}

在上述代码中,我们通过Calendar类获取当前的Calendar实例,然后设置每周的第一天为星期一,设置每年的第一周最少包含的天数为1。接着,我们将日历设置为指定日期所在周的星期日,并返回该日期。

步骤 3: 打印输出获取到的周一和周日的日期

最后一步是打印输出获取到的周一和周日的日期。下面是具体的代码示例:

public class Main {
    public static void main(String[] args) {
        String specifiedDate = "2021-10-10"; // 指定日期,格式为YYYY-MM-DD

        String mondayOfTheWeek = DateUtils.getMondayOfTheWeek(specifiedDate);
        String sundayOfTheWeek = DateUtils.getSundayOfTheWeek(specifiedDate);

        System.out.println("指定日期所在周的星期一:" + mondayOfTheWeek);
        System.out.println("指定日期所在周的星期日:" + sundayOfTheWeek);
    }
}

在上述代码中,我们先指定一个日期,然后调用DateUtils类中的getMondayOfTheWeek方法获取指定日期所在周的星期一的日期,再调用getSundayOfTheWeek方法获取指定日期所在周的星期日的日期。最后,我们将这两个日期打印输出。