Calendar 클래스는 Date 클래스와 마찬가지로 날짜와 시간을 다루는 클래스입니다. Calendar 클래스가 추가되며 Date 대부분의 메소드는 잘 사용하지 않으나 경우에 따라 조금씩 사용하는 상황입니다. 이것은 추상 클래스이기 때문에 직접 new 하여 객체 생성이 불가하고 Calendar.getInstance() 메소드를 이용하여 참조변수에 해당 클래스를 담아서 사용하게 됩니다.

위의 상수들을 사용하여 현재의 시간, 날짜 등을 뽑아올 수 있게 됩니다.

public class Main06 {
public static void main(String[] args) {
/*
* 2023년 2월달 달력을 만드시오
*/
Calendar cal = Calendar.getInstance();
int MaxDayNumber = cal.getActualMaximum(cal.DAY_OF_MONTH);
int day_num = 0;
cal.set(Calendar.DAY_OF_MONTH,1);
int first_day = cal.get(Calendar.DAY_OF_WEEK);
int MaxWeekNumber = cal.getActualMaximum(cal.WEEK_OF_MONTH);
for (int i = 0 ; i < MaxWeekNumber ; i ++) {
for (int j = 0 ; j < cal.DAY_OF_WEEK ; j++) {
if (j == first_day-1 || day_num >= 1) {
day_num++;
System.out.printf("%2d \t", day_num);
}else {
System.out.print("\t");
}
if (day_num == MaxDayNumber) {
break;
}
}
System.out.println();
}
}
}
위의 메소드와 상수들을 사용하여서 조합하여 공백을 포함하는 2월달 달력을 제작 했습니다.
다음은 결과 입니다.
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28
카운트하는 변수가 시작날짜의 인덱스를 넘지 못하면 탭을 출력하게 하여서 처음 공간을 해결했습니다.