如何用 Java 计算今天是周几

简介

在日常开发中,我们经常会遇到需要计算给定日期是星期几的情况。虽然 Java 提供了一套日期和时间的 API,但是对于刚入行的开发者来说可能还不太熟悉。本文将介绍如何使用 Java 来计算今天是周几,并提供详细的步骤和代码示例。

计算流程

下面是计算今天是周几的流程:

步骤 描述
1 获取当前日期和时间
2 提取出日期中的年、月、日
3 使用 Zeller 公式计算
4 根据计算结果判断是周几

接下来,我们将逐步分解每个步骤,并给出相应的代码示例。

步骤一:获取当前日期和时间

在 Java 中,我们可以使用 java.util.Date 类来获取当前日期和时间。以下是获取当前日期和时间的代码示例:

import java.util.Date;

// 创建 Date 对象来存储当前日期和时间
Date currentDate = new Date();

步骤二:提取出日期中的年、月、日

我们需要将当前日期中的年、月、日提取出来,以便后续计算。Java 提供了 java.util.Calendar 类来处理日期和时间。下面的代码示例展示了如何提取年、月、日:

import java.util.Calendar;

// 创建 Calendar 对象,并将其设置为当前日期
Calendar calendar = Calendar.getInstance();
calendar.setTime(currentDate);

// 获取年、月、日
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 月份从 0 开始,所以需要加 1
int day = calendar.get(Calendar.DAY_OF_MONTH);

步骤三:使用 Zeller 公式计算

Zeller 公式是一种计算给定日期是星期几的公式。其公式如下:

h = (q + (13 * (m + 1)) / 5 + K + K / 4 + J / 4 + 5 * J) % 7

其中,h 表示星期几(0 表示星期六,1 表示星期日,以此类推),q 表示日期,m 表示月份(3 表示 3 月,4 表示 4 月,以此类推),K 表示年的后两位数,J 表示年的前两位数。

以下是使用 Zeller 公式计算星期几的代码示例:

// 计算 Zeller 公式中的各个参数
int h = (day + (13 * (month + 1)) / 5 + year % 100 + (year % 100) / 4 + year / 400 - year / 100) % 7;

步骤四:根据计算结果判断是周几

根据 Zeller 公式的计算结果,我们可以判断给定日期是星期几。以下是根据计算结果判断是周几的代码示例:

// 根据计算结果判断是周几
String dayOfWeek;
switch (h) {
    case 0:
        dayOfWeek = "Saturday";
        break;
    case 1:
        dayOfWeek = "Sunday";
        break;
    case 2:
        dayOfWeek = "Monday";
        break;
    case 3:
        dayOfWeek = "Tuesday";
        break;
    case 4:
        dayOfWeek = "Wednesday";
        break;
    case 5:
        dayOfWeek = "Thursday";
        break;
    case 6:
        dayOfWeek = "Friday";
        break;
    default:
        dayOfWeek = "Invalid";
}

// 输出结果
System.out.println("Today is " + dayOfWeek);

完整代码示例

下面是完整的代码示例,包括上述所有步骤:

import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // 获取当前日期和时间
        Date currentDate = new Date();

        // 创建 Calendar 对象,并将其设置为当前日期
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(currentDate);

        // 提取年、月、日
        int year = calendar