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.print(i); // 使用print方法来打印日期和星期几,而不是printf
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 if (i == calendar.get(Calendar.DAY_OF_WEEK)) { // 日期的右侧没有空格,星期几前面有四个空格
System.out.print(" ");
} else { // 日期和星期几之间有一个空格
System.out.print(" ");
}
}
}
// 方法来获取星期几的名称,需要从API中获取该名称的正确字符串或自己实现它(如果需要)
private static String getDayOfWeek(Calendar calendar) {
return calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
}
}