以下是Java代码,可以生成一个2023年的日历表格:
import java.time.*;
import java.time.format.DateTimeFormatter;
public class Calendar2023 {
public static void main(String[] args) {
// 创建一个LocalDate对象,设置为2023年1月1日
LocalDate date = LocalDate.of(2023, Month.JANUARY, 1);
// 创建一个DateTimeFormatter对象,用于格式化日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d");
// 输出表头
System.out.println(" 2023");
System.out.println("=============================");
System.out.println(" January ");
// 输出第一行星期几的缩写
System.out.println("Su Mo Tu We Th Fr Sa");
// 计算并输出第一周前面的空格
int indent = date.getDayOfWeek().getValue() % 7;
for (int i = 0; i < indent; i++) {
System.out.print(" ");
}
// 循环输出每一天的日期
while (date.getYear() == 2023) {
String dayStr = formatter.format(date);
System.out.print(dayStr + " ");
// 每到周六换行
if (date.getDayOfWeek() == DayOfWeek.SATURDAY) {
System.out.println();
}
// 增加一天
date = date.plusDays(1);
}
}
}
运行上述代码,将会在控制台输出如下结果:
2023
=============================
January
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 31
这个程序创建了一个LocalDate对象,并使用DateTimeFormatter对象将日期格式化为“d”(即只显示日)。然后,它计算第一周前面需要输出多少空格,循环输出每一天的日期,并在每周六换行。