サーブレット-処理日
サーブレットを使用することの最も重要な利点の1つは、コアJavaで使用可能なほとんどのメソッドを使用できることです。このチュートリアルでは、提供されているJavaについて説明します。Date で利用可能なクラス java.util パッケージの場合、このクラスは現在の日付と時刻をカプセル化します。
Dateクラスは、2つのコンストラクターをサポートします。最初のコンストラクターは、オブジェクトを現在の日付と時刻で初期化します。
Date( )
次のコンストラクターは、1970年1月1日の深夜から経過したミリ秒数に等しい1つの引数を受け入れます。
Date(long millisec)
Dateオブジェクトを使用できるようになったら、次のサポートメソッドのいずれかを呼び出して日付を操作できます-
シニア番号 | 方法と説明 |
---|---|
1 | boolean after(Date date) 呼び出し元のDateオブジェクトにdateで指定された日付より後の日付が含まれている場合はtrueを返し、そうでない場合はfalseを返します。 |
2 | boolean before(Date date) 呼び出し元のDateオブジェクトにdateで指定された日付より前の日付が含まれている場合はtrueを返し、そうでない場合はfalseを返します。 |
3 | Object clone( ) 呼び出し元のDateオブジェクトを複製します。 |
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オブジェクトを文字列に変換し、結果を返します。 |
現在の日付と時刻を取得する
これは、Javaサーブレットで現在の日付と時刻を取得するのが非常に簡単です。toString()メソッドで単純なDateオブジェクトを使用して、次のように現在の日付と時刻を出力できます。
// Import required java libraries
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Display Current Date & Time";
Date date = new Date();
String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor = \"#f0f0f0\">\n" +
"<h1 align = \"center\">" + title + "</h1>\n" +
"<h2 align = \"center\">" + date.toString() + "</h2>\n" +
"</body>
</html>"
);
}
}
次に、上記のサーブレットをコンパイルしてweb.xmlに適切なエントリを作成し、URL http:// localhost:8080 / CurrentDateを使用してこのサーブレットを呼び出します。これにより、次の結果が得られます-
Display Current Date & Time
Mon Jun 21 21:46:49 GMT+04:00 2010
URL http:// localhost:8080 / CurrentDateを更新してみてください。更新するたびに、秒単位で違いが見つかります。
日付の比較
上で述べたように、サーブレットで使用可能なすべてのJavaメソッドを使用できます。2つの日付を比較する必要がある場合、以下の方法があります-
getTime()を使用して、両方のオブジェクトについて1970年1月1日の午前0時から経過したミリ秒数を取得し、これら2つの値を比較できます。
メソッドbefore()、after()、equals()を使用できます。たとえば、月の12日は18日の前に来るため、new Date(99、2、12).before(new Date(99、2、18))はtrueを返します。
Comparableインターフェースによって定義され、Dateによって実装されるcompareTo()メソッドを使用できます。
SimpleDateFormatを使用した日付の書式設定
SimpleDateFormatは、ロケールに依存する方法で日付をフォーマットおよび解析するための具象クラスです。SimpleDateFormatを使用すると、日時フォーマット用のユーザー定義パターンを選択することから始めることができます。
上記の例を次のように変更しましょう-
// Import required java libraries
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Display Current Date & Time";
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor = \"#f0f0f0\">\n" +
"<h1 align = \"center\">" + title + "</h1>\n" +
"<h2 align = \"center\">" + ft.format(dNow) + "</h2>\n" +
"</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文字がパターン文字として予約されており、次のように定義されています。
キャラクター | 説明 | 例 |
---|---|---|
G | 時代指定子 | 広告 |
y | 4桁の年 | 2001年 |
M | 年の月 | 7月または07 |
d | 月の日 | 10 |
h | 午前/午後の時間(1〜12) | 12 |
H | 1日の時間(0〜23) | 22 |
m | 時間単位の分 | 30 |
s | 分で2番目 | 55 |
S | ミリ秒 | 234 |
E | 曜日 | 火曜日 |
D | 年間の日 | 360 |
F | 月の曜日 | 2(7月第2水曜日) |
w | 年間の週 | 40 |
W | 月の週 | 1 |
A | AM / PMマーカー | 午後 |
k | 1日の時間(1〜24) | 24 |
K | 午前/午後の時間(0〜11) | 10 |
z | タイムゾーン | 東部標準時 |
' | テキストのエスケープ | デリミタ |
「」 | 一重引用符 | ` |
日付を操作するために使用可能な定数メソッドの完全なリストについては、標準のJavaドキュメントを参照してください。