在 Java 中查询日历信息可以使用 java.util.Calendar 类或者 java.time 包。推荐使用 java.time 包,因为它更现代且更强大。

下面是一个使用 java.time 包的示例,演示如何查询当前日期、星期几、以及显示一个指定月份的日历:

import java.time.LocalDate; import java.time.Month; import java.time.format.DateTimeFormatter; import java.time.DayOfWeek; import java.time.YearMonth; import java.util.Scanner;

public class CalendarExample {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    // 获取当前日期
    LocalDate today = LocalDate.now();
    System.out.println("当前日期: " + today);

    // 获取当前星期几
    DayOfWeek dayOfWeek = today.getDayOfWeek();
    System.out.println("今天是: " + dayOfWeek);

    // 打印当前月份的日历
    printMonthCalendar(today.getYear(), today.getMonthValue());
    
    // 查询指定月份的日历
    System.out.print("请输入年份 (例如 2024): ");
    int year = scanner.nextInt();
    System.out.print("请输入月份 (1-12): ");
    int month = scanner.nextInt();
    
    printMonthCalendar(year, month);
    
    scanner.close();
}

// 打印指定月份的日历
public static void printMonthCalendar(int year, int month) {
    YearMonth yearMonth = YearMonth.of(year, month);
    LocalDate firstDayOfMonth = yearMonth.atDay(1);
    int lengthOfMonth = yearMonth.lengthOfMonth();
    
    System.out.println("\n" + yearMonth.getMonth() + " " + year);
    System.out.println("Su Mo Tu We Th Fr Sa");
    
    // 打印前导空格
    int dayOfWeekValue = firstDayOfMonth.getDayOfWeek().getValue(); // 1=Monday, 7=Sunday
    for (int i = 1; i < dayOfWeekValue; i++) {
        System.out.print("   ");
    }
    
    // 打印每一天
    for (int day = 1; day <= lengthOfMonth; day++) {
        System.out.printf("%2d ", day);
        if ((dayOfWeekValue + day - 1) % 7 == 0) {
            System.out.println();
        }
    }
    System.out.println();
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.

}

代码说明:

  1. 获取当前日期和星期
  • 使用 LocalDate.now() 获取当前日期。
  • 使用 getDayOfWeek() 方法获取当前星期几。
  1. 打印当前月份的日历
  • printMonthCalendar 方法接受年份和月份,并打印出该月的日历。
  • 计算每个月的第一天是星期几,并根据这个信息打印相应的空格。
  • 打印出该月的所有日期,并在每周的结束后换行。
  1. 用户输入
  • 通过 Scanner 获取用户输入的年份和月份,并打印该月的日历。

这个示例展示了如何利用 java.time 包中的类来获取和处理日期信息,并且通过简单的控制台输出展示了如何打印日历。如果需要更复杂的功能(如图形化日历),则可能需要使用第三方库或者图形用户界面库。