Java를 사용하여 Eclipse 콘솔에 캘린더를 표시해 보았습니다.

어디까지나 메모용으로서.
・cal.set(int year,int month-1,1) 할 때 달이 「0부터 11」⇒「1월에서 12월」에 세트 되는 것을 잊어 경향이 있었다.
・cal.getActualMaximum(Calendar.DATE)에서 xxxx년 xx월은 며칠 있는지 알 수 있다.
· 요일과 날짜는 배열을 사용하여 저장했다.



・캘린더를 만들어 출력하는 클래스
 
package foo;
import java.util.Calendar;
public class Calmaker {
public void Makecal(int year,int month){
Calendar cal = Calendar.getInstance();
//int weekday = cal.get(Calendar.DAY_OF_WEEK);
//System.out.println(weekday);

int days[][] = new int[6][7];

System.out.println("日 月 火 水 木 金 土");
int row = 0;

//一日から最終日までループ
for (int i = 1; i <= cal.getActualMaximum(Calendar.DATE); i++) {
    //日付けをオブジェクトに設定
    cal.clear();
    cal.set(year, month-1, i); //月は0から11で指定されているので、-1してあげる。
    int weekday = cal.get(Calendar.DAY_OF_WEEK);

    //日付を拡張
    days[row][weekday-1] = i ;
    //System.out.println(days[row][weekday-1]);

    if(weekday % 7 ==0) {
        row ++;
    }
}

//出力
    for (int k = 0; k < 6; k++) {
        for (int j = 0; j < 7; j++) {

            String res = String.valueOf(days[k][j]);

            if(days[k][j]==0) {
                System.out.print("   ");
            }else if(days[k][j] < 10) {
                    System.out.print(" " + res + " ");

            }else if(days[k][j] >= 10) {
                res = res+" ";
                System.out.print(res);
            }
            if(j == 6) {
                System.out.println("\r\n");
            }
        }
    }
}

}
・메인 클래스

package foo;

import java.util.Scanner;

public class Makecal {
public static void main(String[] args) {
    // TODO 自動生成されたメソッド・スタブ
    System.out.println("西暦を4桁で入力してください");
    Scanner sc1 = new Scanner(System.in);
    System.out.println("月を1から12で入力してください");
    Scanner sc2 = new Scanner(System.in);

    int year  = sc1.nextInt();
    int month = sc2.nextInt();
    System.out.println("西暦"+year+"年" + month +"月");
    System.out.println("");

    Calmaker clm = new Calmaker();
    clm.Makecal(year,month);
}

}



끝.

좋은 웹페이지 즐겨찾기