21xrx.com
2024-09-17 04:21:52 Tuesday
登录
文章检索 我的文章 写文章
如何用Java打造最简单的日历?
2023-06-15 15:38:22 深夜i     --     --
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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复