日時を扱うクラスはDateとGregorianCalendarがありますが、Sunは後者を推奨しているようです。実際GregorianCalendarのほうが扱いやすいです。下のサンプルは、現在時刻が指定した期間内か否かを判定するものです。
ソースコード
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="java.util.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <%! final int MONTH_OFFSET = 1; String showTime(Calendar cal) { String str; str = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + MONTH_OFFSET) + "/" + cal.get(Calendar.DATE) + " " + cal.get(Calendar.HOUR) + ":" + cal.get(Calendar.MINUTE); return str; } boolean isPeriod(Calendar start, Calendar end) { Calendar cur = Calendar.getInstance(); return cur.after(start) && cur.before(end); } %> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Date Comparison</title> </head> <body> <h1>JSP Date Comparison</h1> <% // (year, month, date, hour, minute) monthの範囲は0-11で1月は0 Calendar startTime = new GregorianCalendar(2009, 2 - MONTH_OFFSET, 23, 21, 0); Calendar endTime = new GregorianCalendar(2009, 2 - MONTH_OFFSET, 23, 21, 10); out.println("開始時刻: " + showTime(startTime) + "<br />"); out.println("終了時刻: " + showTime(endTime) + "<br />"); if (isPeriod(startTime, endTime)) { out.println("現時刻は指定期間「内」"); } else { out.println("現時刻は指定期間「外」"); } %> </body> </html>
日時の比較はGregorianCalendar#after、beforeメソッド以外にint compareTo(Calendar cal)等もあります。
実際に使う際、期間を指定するGregorianCalendarのコンストラクタの引数データは他の入力から受け取るようにします。
実行結果例
本日の21:05に計ると…
JSP Date Comparison 開始時刻: 2009/2/23 9:0 終了時刻: 2009/2/23 9:10 現時刻は指定期間「内」
追記: SimpleDateFormatによる出力の整形
d_kamiさんに改良していただきました。ありがとうございます(^-^)
String showTime(Calendar cal) {
Date date = cal.getTime();
SimpleDateFormat format = new SimpleDateFormat(“yyyy/MM/dd HH:mm”);
return format.format(date);
}
と書けばすっきりするよ、import java.text.SimpleDateFormatを忘れずに – SimpleDateFormat – マイペースなプログラミング日記
showTimeを修正して計りなおした実行結果は、
開始時刻: 2009/02/23 21:00 終了時刻: 2009/02/24 21:10 現時刻は指定期間「内」
確かに出力はyyyy/MM/dd HH:mmの形式になっていて見栄えも良いです。
コメント
[Java]SimpleDateFormat
http://www.yukun.info/blog/2009/02/java-jsp-gregoriancalendar-period.html のshowTimeメソッド String showTime(Calendar cal) { String str; str = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.D…