カレンダー画面表示することを考えると、表示データ素材そのものをどういう形で持つこと
普遍的なものかを考えると、1行表示分の1週間の日付を表す String を、List で
表現することであろう。→ List<String> である。x月1日が、
水曜の場合、[0]~[2]を任意の文字で埋めるとして
以下のメソッドが用意できる。
public static List<String> calendarList(Date date,String blank){
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(c.get(Calendar.YEAR),c.get(Calendar.MONTH),1);
int firstWeek = c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.MONTH,1);
c.set(c.get(Calendar.YEAR),c.get(Calendar.MONTH),1);
c.add(Calendar.DAY_OF_MONTH, - c.get(Calendar.DAY_OF_MONTH));
int endday = c.get(Calendar.DAY_OF_MONTH);
List<String> list = new ArrayList<String>();
int day = 1;
int week = 0;
String s = new String[7];
int o = firstWeek - 1;
for(;week < o;week++){
s[week] = blank;
}
for(int d=day;d <= endday;d++){
if (week==7){
list.add(s);
s = new String[7];
week = 0;
}
s[week] = Integer.toString(d);
week++;
}
for(;week < 7;week++){
s[week] = blank;
}
list.add(s);
return list;
}
この結果を HTML <table> タグ出力するなら Listのサイズ分、
<tr> のループで処理、さらに String[] 7個を <td> で書き込む
ループ処理をすればよいだろう。