public class CalendarTest {
public static void main(String[] args) {
LocalDate date = LocalDate.now(); // 获取当前日期
int month = date.getMonthValue(); // 获取当前日期是几月
int today = date.getDayOfMonth(); // 获取当前日期是这个月的第几天
date = date.minusDays(today - 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.getDayOfMonth() == today)
System.out.print("*");
else
System.out.print(" ");
date = date.plusDays(1);
if (date.getDayOfWeek().getValue() == 1)
System.out.println();
}
if (date.getDayOfWeek().getValue() != 1)
System.out.println();
}
}
显示结果
或者使用Calendar也可以:
public class PrintCalendar {
private static Scanner scanner;
public static void main(String[] args) throws ParseException {
// 获取输入的日期
System.out.println("请输入日期(格式:2019-11-30):");
scanner = new Scanner(System.in);
String string = scanner.nextLine();
// 字符串转换为时间类
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(string);
// 时间类转换为日期类
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_MONTH); // 获取输入的日期是那一天
// 接下来就打印
System.out.println("日\t一\t二\t三\t四\t五\t六");
calendar.set(Calendar.DAY_OF_MONTH, 1);
for (int i = 0; i < calendar.get(Calendar.DAY_OF_WEEK) - 1; i++) {
System.out.print("\t");
}
int maxDay = calendar.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= maxDay; i++) {
if (day == calendar.get(Calendar.DAY_OF_MONTH)) {
System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "*\t");
} else {
System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "\t");
}
if ((calendar.get(Calendar.DAY_OF_WEEK)) == Calendar.SATURDAY) {
System.out.println();
}
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
}
}