カレンダー表示の為の日付配列リストを求めるのを前に作成したが、
前月の日付を求められるようにした。つまり、12月1日が、月曜なら前月の末日を
日曜の位置に埋め込むことができるようにした。
/**
* 指定日の月のカレンダー配列List を作成する
* @param date カレンダーを求めたい日付
* @param blank 該当しない曜日の表示文字、null を渡すと前月、翌月の日付けが格納される
* @return List<String> String length = 7
*/
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);
int last = 31;
if (blank==null){
c.set(Calendar.DAY_OF_MONTH,1);
c.add(Calendar.DAY_OF_MONTH,-1);
last = 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;
if (blank==null){
int x = last;
for(int i=o-1;i >= 0;i--,x--){
s[i] = Integer.toString(x);
week++;
}
}else{
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++;
}
if (blank==null){
int x = 1;
for(;week < 7;week++,x++){
s[week] = Integer.toString(x);
}
}else{
for(;week < 7;week++){
s[week] = blank;
}
}
list.add(s);
return list;
}