質問: i * 7; j < i * 7 + 7; j++) { if (calendarDay[j] > 35) { sb.append(""); sb.append(calendarDay[j] - 35); } else { sb.append(""); sb.append(calendarDay[j]); } sb.append(""); } sb.append(""); /* カレンダーのスケジュール登録画面を作成する */ sb.append(createScheduleStr(month, i * 7, calendarDay, userid)); } sb.append(""); sb.append(""); sb.append(""); out.println(new String(sb)); } ### 補足情報(言語/FW/ツール等のバージョンなど) Eclipse tomcat6.0
回答: 上の続きです /** * スケジュール登録へのリンクを設定する */ protected String createScheduleStr(int month, int startDayNo, int[] calendarDay, int userid) { StringBuffer sb = new StringBuffer(); sb.append(""); for (int i = startDayNo; i < startDayNo + 7; i++) { if (calendarDay[i] > 35) { /* 前月及び翌月の箇所にはアイコンは表示しない */ sb.append(""); } else { sb.append(""); sb.append(""); sb.append(""); sb.append(""); /* スケジュールの表示 */ sb.append(""); try { String sql = "SELECT * FROM schedule WHERE userid = ? and scheduledate = ? ORDER BY starttime"; PreparedStatement pstmt = conn.prepareStatement(sql); String startDateStr = (month + 1) + "-" + calendarDay[i]; pstmt.setInt(1, userid); pstmt.setString(2, startDateStr); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String starttime = rs.getString("starttime"); String endtime = rs.getString("endtime"); String schedule = rs.getString("schedule"); if (starttime == null || endtime == null) { sb.append("* "); } else { sb.append(starttime.substring(0, 5)); sb.append("-"); sb.append(endtime.substring(0, 5)); sb.append(" "); } sb.append(""); sb.append(schedule); sb.append(""); } rs.close(); pstmt.close(); } catch (SQLException e) { log("SQLException:" + e.getMessage()); } sb.append(""); sb.append(""); } sb.append(""); } sb.append(""); return (new String(sb)); } protected int setDateArray(int year, int month, int day, int[] calendarDay, int count) { Calendar calendar = Calendar.getInstance(); /* 今月が何曜日から開始されているか確認する */ calendar.set(year, month, 1); int startWeek = calendar.get(Calendar.DAY_OF_WEEK); System.out.println("今月の曜日は" + startWeek + "から"); /* 先月が何日までだったかを確認する */ calendar.set(year, month, 0); int beforeMonthlastDay = calendar.get(Calendar.DATE); System.out.println("先月は" + beforeMonthlastDay + "日まで"); /* 今月が何日までかを確認する */ calendar.set(year, month + 1, 0); int thisMonthlastDay = calendar.get(Calendar.DATE); System.out.println("今月は" + thisMonthlastDay + "日まで\r\n"); /* 先月分の日付を格納する */ for (int i = startWeek - 2; i >= 0 ; i--) { calendarDay[count++] = beforeMonthlastDay - i + 35; } /* 今月分の日付を格納する */ for (int i = 1; i <= thisMonthlastDay; i++) { calendarDay[count++] = i; } /* 翌月分の日付を格納する */ int nextMonthDay = 1; while (count % 7 != 0) { calendarDay[count++] = 35 + nextMonthDay++; } return count; } /* * 前後の月のリンク */ protected String createMonthLink(int year, int month) { StringBuffer sb = new StringBuffer(); sb.append(""); sb.append("前月 "); sb.append(year); sb.append("年"); sb.append(month + 1); sb.append("月 "); sb.append("翌月"); sb.append(""); return (new String(sb)); } }