Java 打印指定年月的日历
1. 概述
本教程将介绍如何使用 Java 打印指定年月的日历,本教程不需要使用任何第三方库。
2. 步骤
2.1 步骤一:获取指定日期的 Calendar 对象
java.util.Calendar 类是表示日历的抽象类。它提供了许多静态工厂方法来获取实例, 例如 getInstance() 返回一个默认时区的当前日期和时间的 Calendar 对象。
Calendar cal = Calendar.getInstance();
使用上述代码将获取到的 Calendar 对象初始化为当前日期和时间。
将其设置为指定日期:
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, 9); // 10月
cal.set(Calendar.DAY_OF_MONTH, 1);
2.2 步骤二:获取指定月份的天数
获取指定月份的天数需要使用 Calendar 对象的 getActualMaximum 方法。
int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
2.3 步骤三:获取指定日期是星期几
获取指定日期是星期几可以使用 Calendar 对象的 get 方法。
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
2.4 步骤四:打印日历
在我们得到了指定月份的天数和指定日期是星期几之后,我们就可以开始打印日历了。
首先,我们需要在控制台输出星期几的头部:
System.out.println("日\t一\t二\t三\t四\t五\t六");
接下来,我们需要构造一个指定月份的日历。
for (int i = 1; i < dayOfWeek; i++) {
System.out.print("\t");
}
for (int i = 1; i <= daysInMonth; i++) {
System.out.print(i + "\t");
if ((i + dayOfWeek - 1) % 7 == 0) {
System.out.println();
}
}
System.out.println();
在这段代码中,我们首先填补前面的空白格(即星期日到指定日期的 i-1 个字符),接着在一行内依次输出月份的日期,并在每输出七个数字后换行。
接下来,我们将以上代码整合到一个完整的 Java 程序中:
import java.util.Calendar;
public class PrintMonthCalender {
public static void main(String[] args) {
int year = 2019;
int month = 9;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i < dayOfWeek; i++) {
System.out.print("\t");
}
for (int i = 1; i <= daysInMonth; i++) {
System.out.print(i + "\t");
if ((i + dayOfWeek - 1) % 7 == 0) {
System.out.println();
}
}
System.out.println();
}
}
2.5 示例
接下来,我们看一下两个示例:
- 示例 1
输出 2022 年 2 月的日历。
int year = 2022;
int month = 2;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i < dayOfWeek; i++) {
System.out.print("\t");
}
for (int i = 1; i <= daysInMonth; i++) {
System.out.print(i + "\t");
if ((i + dayOfWeek - 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
- 示例 2
输出 2021 年 11 月的日历。
int year = 2021;
int month = 11;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i < dayOfWeek; i++) {
System.out.print("\t");
}
for (int i = 1; i <= daysInMonth; i++) {
System.out.print(i + "\t");
if ((i + dayOfWeek - 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
以上是本教程的全部内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java打印指定年月的日历 - Python技术站