Jsp-handling-date
JSP-日付の処理
この章では、JSPでデータを処理する方法について説明します。 JSPを使用する最も重要な利点の1つは、コアJavaで使用可能なすべてのメソッドを使用できることです。 java.util パッケージで利用可能な Date クラスを紹介します。このクラスは、現在の日付と時刻をカプセル化します。
Dateクラスは2つのコンストラクターをサポートします。 最初のコンストラクターは、現在の日付と時刻でオブジェクトを初期化します。
Date( )
次のコンストラクターは、1970年1月1日の午前0時から経過したミリ秒数に等しい1つの引数を受け入れます。
Date(long millisec)
日付オブジェクトが利用可能になったら、次のサポートメソッドのいずれかを呼び出して日付を再生できます-
S.No. | Methods & Description |
---|---|
1 |
boolean after(Date date) 呼び出したDateオブジェクトにdateで指定された日付よりも後の日付が含まれている場合はtrueを返し、それ以外の場合はfalseを返します。 |
2 |
boolean before(Date date) 呼び出したDateオブジェクトにdateで指定された日付よりも前の日付が含まれている場合はtrueを返し、それ以外の場合はfalseを返します。 |
3 |
Object clone( ) 呼び出し日付オブジェクトを複製します。 |
4 |
int compareTo(Date date) 呼び出しオブジェクトの値と日付の値を比較します。 値が等しい場合は0を返します。 呼び出しオブジェクトが日付より前の場合、負の値を返します。 呼び出しオブジェクトが日付より後の場合、正の値を返します。 |
5 |
int compareTo(Object obj) objがDateクラスの場合、compareTo(Date)と同じように動作します。 それ以外の場合、ClassCastExceptionがスローされます。 |
6 |
boolean equals(Object date) 呼び出したDateオブジェクトにdateで指定された日時と同じ日時が含まれる場合はtrueを返し、そうでない場合はfalseを返します。 |
7 |
long getTime( ) 1970年1月1日から経過したミリ秒数を返します。 |
8 |
int hashCode( ) 呼び出し元オブジェクトのハッシュコードを返します。 |
9 |
void setTime(long time) 1970年1月1日午前0時からの経過時間をミリ秒で表すtimeで指定された時刻と日付を設定します |
10 |
String toString( ) 呼び出しDateオブジェクトを文字列に変換し、結果を返します。 |
現在の日付と時刻を取得する
JSPプログラムを使用すると、現在の日付と時刻を簡単に取得できます。 あなたは、次のように現在の日付と時刻を印刷するために、 _ toString()_ メソッドで単純なDateオブジェクトを使用することができます-
<%@ page import = "java.io.*,java.util.*, javax.servlet.*" %>
<html>
<head>
<title>Display Current Date & Time</title>
</head>
<body>
<center>
<h1>Display Current Date & Time</h1>
</center>
<%
Date date = new Date();
out.print( "<h2 align = \"center\">" +date.toString()+"</h2>");
%>
</body>
</html>
ここで、コードを CurrentDate.jsp に保持し、URL http://localhost:8080/CurrentDate.jsp を使用してこのJSPを呼び出します。 次の結果が表示されます-
Display Current Date & Time
Mon Jun 21 21:46:49 GMT+04:00 2010
*URL http://localhost:8080/CurrentDate.jsp* でページを更新します。 更新するたびに、秒単位で違いが見つかります。
日付比較
前のセクションで説明したように、JSPスクリプトで利用可能なすべてのJavaメソッドを使用できます。 あなたが2つの日付を比較する必要がある場合は、次の方法を検討してください-
- * getTime()*メソッドを使用して、両方のオブジェクトについて1970年1月1日午前0時から経過したミリ秒数を取得し、これら2つの値を比較できます。
- 月の12日は18日より前なので、メソッド* before()、after()、および equals()を使用できます。たとえば、 new Date(99、2、12).before(new Date(99、2、18))*はtrueを返します。
- * compareTo()メソッドを使用できます。このメソッドは Comparableインターフェイス*によって定義され、Dateによって実装されます。
SimpleDateFormatを使用した日付の書式設定
SimpleDateFormatは、ロケールに依存した方法で日付をフォーマットおよび解析するための具象クラスです。 SimpleDateFormatを使用すると、日時の書式設定にユーザー定義のパターンを選択することから開始できます。
上記の例を次のように変更しましょう-
<%@ page import = "java.io.*,java.util.*" %>
<%@ page import = "javax.servlet.*,java.text.*" %>
<html>
<head>
<title>Display Current Date & Time</title>
</head>
<body>
<center>
<h1>Display Current Date & Time</h1>
</center>
<%
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
out.print( "<h2 align=\"center\">" + ft.format(dNow) + "</h2>");
%>
</body>
</html>
上記のサーブレットをもう一度コンパイルし、URL http://localhost:8080/CurrentDate を使用してこのサーブレットを呼び出します。 次の結果が表示されます-
Display Current Date & Time
Mon 2010.06.21 at 10:06:44 PM GMT+04:00
単純なDateFormat形式コード
時間形式を指定するには、時間パターン文字列を使用します。 このパターンでは、すべてのASCII文字はパターン文字として予約されており、次のように定義されています-
Character | Description | Example |
---|---|---|
G | Era designator | AD |
y | Year in four digits | 2001 |
M | Month in year | July or 07 |
d | Day in month | 0 |
h | Hour in A.M./P.M. (1~12) | 2 |
H | Hour in day (0~23) | 22 |
m | Minute in hour | 30 |
s | Second in minute | 55 |
S | Millisecond | 234 |
E | Day in week | Tuesday |
D | Day in year | 360 |
F | Day of week in month | 2 (second Wed. in July) |
w | Week in year | 40 |
W | Week in month | |
a | A.M./P.M. marker | PM |
k | Hour in day (1~24) | 24 |
K | Hour in A.M./P.M. (0~11) | 0 |
z | Time zone | Eastern Standard Time |
' | Escape for text | Delimiter |
" | Single quote | ` |
日付を操作するために使用可能な定数メソッドの完全なリストについては、標準のJavaドキュメントを参照できます。