import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
LocalDate currentDate = LocalDate.now(); //获取当前日期
currentDate = currentDate.minus(1, ChronoUnit.MONTHS); //将日期减去一个月
printCalendar(currentDate); //打印当前月份的日历
}
private static void printCalendar(LocalDate date) {
// 创建一个Calendar对象来获取当前月份的日历
Calendar calendar = Calendar.getInstance();
calendar.set(date);
// 打印星期几
System.out.println("星期" + getDayOfWeek(calendar));
// 打印日期和星期几
for (int i = 1; i <= calendar.get(Calendar.DAY_OF_MONTH); i++) {
System.out.printf("%2d", i);
if ((i + 6) % 7 == 0) { // 每7天换行
System.out.println();
} else if (i == calendar.get(Calendar.AM_PM)) { // 当日为下午或上午的最后一小时,前面不加空格
System.out.print(" ");
} else if (i < calendar.get(Calendar.AM_PM)) { // 日期的左侧没有空格,星期几前面有四个空格
System.out.print(" ");
} else { // 日期的右侧没有空格,星期几前面有四个空格,其它没有空格
System.out.print(" ");
}
if ((i % 7 == 0) || (i == calendar.get(Calendar.AM_PM))) { // 每行打印7个日期和空格
System.out.println();
} else { // 每天都在同一天,打印两个日期和一个空格,一行一个日期和一个空格
System.out.print(" ");
}
}
}
private static String getDayOfWeek(Calendar calendar) {
String[] days = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
return days[calendar.get(Calendar.DAY_OF_WEEK)]; //返回当前日期对应的星期几
}
}