21xrx.com
2025-03-21 12:33:13 Friday
文章检索 我的文章 写文章
如何用Java打造最简单的日历?
2023-06-15 15:38:22 深夜i     10     0
Java 日历 Calendar

一. 实现效果

我们要实现一个最简单的日历,它可以输出当前月份的日历。比如,如果当前是2022年11月,那么它可以输出如下的日历:

    November 2022

Su Mo Tu We Th Fr Sa

    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

二. 实现思路

实现这个日历的关键是要知道每个月有多少天,以及每个月的第一天是星期几。我们可以使用Java中的Calendar类和SimpleDateFormat类来实现这个日历。

Calendar类是一个抽象类,它提供了很多操作日期和时间的方法。我们可以通过创建Calendar对象来获取当前的年月,再通过set方法来设置当前月份的第一天,然后通过get方法来获取当前月份的天数和星期几。最后,我们可以使用SimpleDateFormat类来格式化输出当前月份的日历。

三. 代码实现

下面是实现最简单日历的Java代码:

import java.text.SimpleDateFormat;
import java.util.Calendar;
public class SimpleCalendar {
  public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH) + 1;
    int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    int weekDayOfFirstDay = calendar.get(Calendar.DAY_OF_WEEK);
    SimpleDateFormat sdf = new SimpleDateFormat("MMMM yyyy");
    String monthStr = sdf.format(calendar.getTime());
    System.out.println(monthStr);
    System.out.println(" Su Mo Tu We Th Fr Sa");
    for (int i = 1; i < weekDayOfFirstDay; i++) {
      System.out.print("  ");
    }
    for (int i = 1; i <= days; i++) {
      System.out.printf("%3d", i);
      if ((i + weekDayOfFirstDay - 1) % 7 == 0) {
        System.out.println();
      }
    }
  }
}

运行结果如下:

    November 2022

Su Mo Tu We Th Fr Sa

    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

四. 关键词

Java、日历、Calendar

  
  

评论区