Java 根据日期查询日期的周一

1. 概述

在Java开发中,我们经常会遇到需要根据日期查询特定日期的需求。本文将教您如何根据日期查询该日期所在周的周一。

2. 流程

下面是实现该功能的步骤:

步骤 描述
步骤1 获取输入日期
步骤2 根据输入日期计算该日期是星期几
步骤3 计算输入日期与星期一的偏移天数
步骤4 根据偏移天数计算出周一的日期

3. 代码实现

步骤1:获取输入日期

首先,我们需要从用户输入中获取日期。在Java中,我们可以使用Scanner类来实现这一功能。以下是获取日期的示例代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入日期(格式为yyyy-MM-dd):");
        String dateString = scanner.nextLine();
        scanner.close();
    }
}

步骤2:根据输入日期计算星期几

接下来,我们需要根据输入的日期计算该日期是星期几。Java中的Calendar类可以帮助我们实现这个功能。以下是计算星期几的示例代码:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入日期(格式为yyyy-MM-dd):");
        String dateString = scanner.nextLine();
        scanner.close();
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date;
        try {
            date = sdf.parse(dateString);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            System.out.println("星期" + dayOfWeek);
        } catch (Exception e) {
            System.out.println("日期格式错误");
        }
    }
}

步骤3:计算输入日期与星期一的偏移天数

现在,我们需要计算输入日期与周一之间的偏移天数,以便后续计算得到周一的日期。以下是计算偏移天数的示例代码:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入日期(格式为yyyy-MM-dd):");
        String dateString = scanner.nextLine();
        scanner.close();
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date;
        try {
            date = sdf.parse(dateString);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            int offset = dayOfWeek - 2; // 偏移天数 = 星期几 - 2
            System.out.println("偏移天数:" + offset);
        } catch (Exception e) {
            System.out.println("日期格式错误");
        }
    }
}

步骤4:计算周一的日期

最后,我们可以根据输入日期与偏移天数计算出周一的日期。以下是计算周一日期的示例代码:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入日期(格式为yyyy-MM-dd):");
        String dateString = scanner.nextLine();
        scanner.close();
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date;
        try {
            date = sdf.parse(dateString);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            int offset = dayOfWeek - 2; // 偏移天数 = 星期几 - 2
            calendar.add(Calendar.DAY_OF_MONTH, -offset);
            Date monday = calendar.getTime();
            String mondayString = sdf.format(monday);
            System.out.println("周一的日期:" + mondayString);
        } catch (Exception e) {
            System.out.println("日期格式错误");
        }
    }
}

4. 状态图

下面是该功能的状态图:

stateDiagram
    [*] --> 获取输入日期
    获取输入日期 --> 根