Java日历打印方法有哪些?如何高效生成和打印自定义日历?
- 后端开发
- 2025-10-13
- 7
在Java中,打印日历是一个常见的任务,可以通过多种方式实现,以下是一个详细的步骤,展示如何使用Java编写一个简单的程序来打印日历。

使用Calendar类
Java的Calendar类是处理日期和时间的首选类,以下是如何使用Calendar类来打印日历的步骤:
1 导入必要的包
import java.util.Calendar; import java.util.GregorianCalendar;
2 创建Calendar实例
Calendar calendar = new GregorianCalendar();
3 获取年、月、日
int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始,所以要加1 int day = calendar.get(Calendar.DAY_OF_MONTH);
4 打印日历头部
String[] daysOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; String[] monthsOfYear = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; System.out.println(" " + monthsOfYear[month 1] + " " + year); System.out.println("Su Mo Tu We Th Fr Sa");
5 计算第一天是星期几
int startDay = calendar.get(Calendar.DAY_OF_WEEK);
6 打印前导空格
for (int i = 1; i < startDay; i++) { System.out.print(" "); }
7 打印日历
for (int i = 1; i <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) { System.out.printf("%2d ", i); if ((i + startDay 1) % 7 == 0) { System.out.println(); } }
使用SimpleDateFormat和Calendar
另一种方法是使用SimpleDateFormat和Calendar类来格式化日期并打印日历。
1 导入必要的包
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;
2 创建SimpleDateFormat实例
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
3 创建Calendar实例
Calendar calendar = Calendar.getInstance();
4 获取年、月、日
int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH);
5 打印日历头部
String[] daysOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; String[] monthsOfYear = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; System.out.println(" " + monthsOfYear[month 1] + " " + year); System.out.println("Su Mo Tu We Th Fr Sa");
6 计算第一天是星期几
int startDay = calendar.get(Calendar.DAY_OF_WEEK);
7 打印前导空格
for (int i = 1; i < startDay; i++) { System.out.print(" "); }
8 打印日历
for (int i = 1; i <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) { System.out.printf("%2d ", i); if ((i + startDay 1) % 7 == 0) { System.out.println(); } }
使用java.time包
Java 8引入了新的日期和时间API,使用java.time包可以更方便地处理日期和时间。

1 导入必要的包
import java.time.LocalDate; import java.time.format.DateTimeFormatter;
2 创建LocalDate实例
LocalDate date = LocalDate.now();
3 获取年、月、日
int year = date.getYear(); int month = date.getMonthValue(); int day = date.getDayOfMonth();
4 打印日历头部
String[] daysOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; String[] monthsOfYear = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; System.out.println(" " + monthsOfYear[month 1] + " " + year); System.out.println("Su Mo Tu We Th Fr Sa");
5 计算第一天是星期几
int startDay = date.getDayOfWeek().getValue();
6 打印前导空格
for (int i = 1; i < startDay; i++) { System.out.print(" "); }
7 打印日历
for (int i = 1; i <= date.lengthOfMonth(); i++) { System.out.printf("%2d ", i); if ((i + startDay 1) % 7 == 0) { System.out.println(); } }
FAQs
Q1: 如何在Java中打印当前日期的日历?
A1: 可以使用Calendar类或java.time包中的LocalDate类来获取当前日期,然后按照上述步骤打印日历。
Q2: 如何在Java中打印指定日期的日历?
A2: 可以使用Calendar类或java.time包中的LocalDate类来设置指定的年、月、日,然后按照上述步骤打印日历。
