日历如何打印java
打印日历的Java实现方法
使用Java打印日历可以通过java.util.Calendar类或java.time包(Java 8及以上版本)实现。以下是两种不同的实现方式:

使用java.util.Calendar类
import java.util.Calendar;
public class PrintCalendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
printCalendar(year, month);
}
public static void printCalendar(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, 1);
int startDay = calendar.get(Calendar.DAY_OF_WEEK);
int numberOfDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
for (int i = 1; i < startDay; i++) {
System.out.print(" ");
}
for (int i = 1; i <= numberOfDays; i++) {
System.out.printf("%3d ", i);
if ((i + startDay - 1) % 7 == 0 || i == numberOfDays) {
System.out.println();
}
}
}
}
使用java.time包(Java 8及以上版本)
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.Locale;
public class PrintCalendarJava8 {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
printCalendar(date.getYear(), date.getMonthValue());
}
public static void printCalendar(int year, int month) {
LocalDate date = LocalDate.of(year, month, 1);
String monthName = date.getMonth().getDisplayName(TextStyle.FULL, Locale.getDefault());
System.out.println(" " + monthName + " " + year);
System.out.println("Su Mo Tu We Th Fr Sa");
int startDay = date.getDayOfWeek().getValue() % 7;
int lengthOfMonth = date.lengthOfMonth();
for (int i = 0; i < startDay; i++) {
System.out.print(" ");
}
for (int i = 1; i <= lengthOfMonth; i++) {
System.out.printf("%2d ", i);
if ((i + startDay) % 7 == 0 || i == lengthOfMonth) {
System.out.println();
}
}
}
}
自定义日历打印
如果需要打印特定年份和月份的日历,可以修改代码中的year和month参数:

printCalendar(2023, 12); // 打印2023年12月的日历
格式化输出
可以通过调整printf的格式字符串来改变日历的显示样式:
System.out.printf("%4d", day); // 使用4字符宽度对齐
以上代码提供了两种不同的实现方式,可以根据项目需求选择适合的版本。java.time包的版本更现代且线程安全,推荐在Java 8及以上版本中使用。






