プロが教える店舗&オフィスのセキュリティ対策術

<%@ page language=\"java\" contentType=\"text/html; charset=Shift_JIS\"
import=\"java.util.*\"%>
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">
<title>カレンダー</title>
</head>
<body>
<%
//カレンダーオブジェクトを生成する
Calendar myCal = Calendar.getInstance();

//年月日を取得する
int year = myCal.get(Calendar.YEAR);
int month = myCal.get(Calendar.MONTH) + 1;
if (request.getMethod().equals(\"POST\")) {
year = Integer.parseInt(request.getParameter(\"yyyy\"));
month = Integer.parseInt(request.getParameter(\"mm\"));
}

//年月選択リストを表示する
out.println(\"<form method=\'POST\' action=\'Calendar2.jsp\'>\");
out.println(\"<table><tr><td>\");

//年
out.println(\"<select name=\'yyyy\'>\");
for (int i = 2000; i <= 2020; i++) {
out.println(\"<option\");
if (i == year) {
out.println(\" selected \");
}
out.println(\">\" + i);
}
out.println(\"</select>年\");

//月
out.println(\"<select name=\'mm\'>\");
for (int i = 1; i <= 12; i++) {
out.println(\"<option\");
if (i == month) {
out.println(\" selected \");
}
out.println(\">\" + i);
}
out.println(\"</select>月\");

out.println(\"</td>\");
out.println(\"<td><input type=\'submit\' value=\'更新\'></td>\");
out.println(\"</tr></table></form>\");

//カレンダーを表示する
out.println(\"<table border=\'1\'>\");
out.println(\"<tr>\");
out.println(\"<td>日</td>\");
out.println(\"<td>月</td>\");
out.println(\"<td>火</td>\");
out.println(\"<td>水</td>\");
out.println(\"<td>木</td>\");
out.println(\"<td>金</td>\");
out.println(\"<td>土</td>\");
out.println(\"</tr>\");

//1日の曜日を取得する
myCal.set(year, month - 1, 1);
int dw1 = myCal.get(Calendar.DAY_OF_WEEK);
//末日を取得する
int lastd = myCal.getActualMaximum(Calendar.DAY_OF_MONTH);
//表示する日付を初期化する
int day = 0;

//1日から末日まで日付を表示する
添付したcalendar.jspなのですが、ずばりココ↓の部分なのですが、
for (int i=0; i<=5; i++) {
ここで最大は5以下になっているのですが、そうすると1列多くならないでしょうか。
これだと行数が6つになりますよね。
曜日のセルはその前に作っているので、曜日だけが入るのですから5行でいいと思うのですが、自分の考えは間違っているのでしょうか。
宜しくお願い致します。
for (int i = 0; i <= 5; i++) {
if (day >= lastd) {break;}
out.println(\"<tr>\");
for (int j = 0; j <= 6; j++) {
day = i * 7 + j - dw1 + 2;
if (day > lastd || day < 1) {
out.println(\"<td> </td>\");
}
else {
out.println(\"<td>\" + day + \"</td>\");
}
}
out.println(\"</tr>\");
}
out.println(\"</table>\");
%>
</body>
</html>

A 回答 (2件)

http://okwave.jp/qa4840665.html
こちらは参考になりませんでしたか?

JavaでなくてJavaScriptですね。明確に別物です。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
まず、これはJSPなのでJavaですよね。
問題は貼り付けて頂いたURLなんですけど、残念ながOKWaveの会員ではないので、直接SortaNerdさんにお礼ができないのが残念ですが、でも一言。
まず勘違いをする表現をしました。すいません。列数は7ですね。
ただ日~土までの曜日を表示する行はもう作られていて、数字だけだと5行ではないのでしょうか。
自分がバカなだけのでしょうか。
え~、???です。カレンダーを見たのですが、数字のみで数えると5行7列になるんですが。
1つ間違えればただの赤っ恥なのですが、宜しくお願い致します。

お礼日時:2009/03/31 09:25

月6週あることもあるからでしょう。


例:2009/5
    • good
    • 0
この回答へのお礼

おお!!! なるほど。
これで悩みがスッキリしました。
アドバイスありがとうございます。

お礼日時:2009/03/31 09:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!