java如何打印日历
打印日历的方法
在Java中打印日历可以通过多种方式实现,以下是几种常见的方法:
使用java.util.Calendar类
通过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);
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及以上)
Java 8引入了新的日期时间API,可以通过LocalDate和DayOfWeek类实现日历打印。

import java.time.LocalDate;
import java.time.DayOfWeek;
public class PrintCalendar {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
int month = date.getMonthValue();
int year = date.getYear();
date = LocalDate.of(year, month, 1);
DayOfWeek weekday = date.getDayOfWeek();
int value = weekday.getValue();
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
for (int i = 1; i < value; i++) {
System.out.print(" ");
}
while (date.getMonthValue() == month) {
System.out.printf("%3d ", date.getDayOfMonth());
if (date.getDayOfWeek().getValue() == 7) {
System.out.println();
}
date = date.plusDays(1);
}
}
}
使用第三方库
如果需要更复杂的日历功能,可以考虑使用第三方库如JCalendar或Apache Commons Lang。
import org.apache.commons.lang3.time.DateUtils;
import java.util.Date;
public class PrintCalendar {
public static void main(String[] args) {
Date date = new Date();
System.out.println(DateUtils.toCalendar(date));
}
}
自定义日历格式
如果需要自定义日历的显示格式,可以通过调整输出语句实现。
System.out.println("=========================");
System.out.println(" " + month + " " + year);
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
注意事项
- 确保日期和星期的对齐正确,避免格式混乱。
- 考虑跨年或跨月的情况,确保逻辑正确。
- 使用
printf或String.format可以更好地控制输出格式。






