サーブレットの処理日
サーブレットを使用する最も重要な利点の 1 つは、コア Java で使用できるほとんどのメソッドを使用できることです。この章では、Java が提供する java.util パッケージの Date クラスについて説明します。このクラスは、現在の日付と時刻をカプセル化します。
Date クラスは 2 つのコンストラクターをサポートします。最初のコンストラクターは、現在の日付と時刻を使用してオブジェクトを初期化します。
Date( )
以下のコンストラクターは、1970 年 1 月 1 日の午前 0 時から経過したミリ秒数に等しいパラメーターを受け入れます。
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) 呼び出し元オブジェクトの値を date の値と比較します。 2 つの値が等しい場合は 0 が返されます。呼び出し元のオブジェクトが日付よりも前にある場合は、負の値が返されます。呼び出したオブジェクトが date より後に来る場合は、正の値が返されます。 |
5 | int CompareTo(Object obj) obj が Date クラスの場合、操作は CompareTo(Date) と同等です。それ以外の場合は、ClassCastException がスローされます。 |
6 | booleanquals(Object date) 呼び出された Date オブジェクトに date で指定された時刻と日付が含まれている場合は true を返し、それ以外の場合は false を返します。 |
7 | long getTime( ) 1970 年 1 月 1 日から経過したミリ秒数を返します。 |
8 | int hashCode( ) 呼び出し元オブジェクトのハッシュ コードを返します。 |
9 | void setTime(long time) 時間を、1970 年 1 月 1 日の午前 0 時からの経過時間 (ミリ秒単位) を表す、指定された日時に設定します。 |
10 | String toString( ) 呼び出された Date オブジェクトを文字列に変換し、結果を返します。 |
現在の日付と時刻を取得する
Java Servlet で現在の日付と時刻を取得するのは非常に簡単です。以下に示すように、単純な Date オブジェクトの toString() メソッドを使用して、現在の日付と時刻を出力できます:
// 导入必需的 java 库 import java.io.*; import java.util.Date; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class CurrentDate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间"; 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 ファイル エントリに適切なサーブレットを作成しましょう。 http://localhost:8080/CurrentDate にアクセスしてサーブレットを呼び出します。これにより、次の結果が生成されます:
現在の日付と時刻を表示しています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 を返します。
compareTo() メソッドを使用できます。このメソッドは Comparable インターフェイスによって定義され、Date によって実装されます。
SimpleDateFormat を使用して日付を書式設定する
SimpleDateFormat は、ロケールに依存した方法で日付を書式設定および解析するための具象クラスです。 SimpleDateFormat を使用すると、ユーザー定義の日付と時刻の書式設定モードを選択できます。
上記の例を次のように変更してみましょう:
// 导入必需的 java 库 import java.io.*; import java.text.*; import java.util.Date; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class CurrentDate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间"; 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>"); } }
上記のサーブレットを再度コンパイルし、http://localhost:8080/CurrentDate にアクセスしてサーブレットを呼び出します。これにより、次の結果が生成されます:
現在の日付と時刻を表示しますMon 2010.06.21 at 10:06:44 PM GMT+04:00 |
単純な日付形式のフォーマットコード
イベントパターン文字列を使用して時間形式を指定します。このモードでは、すべての ASCII 文字がモード文字として予約されており、次のように定義されます。
M | その年の月 | |
---|---|---|
d | その月の日 | |
h | 午前との時間/P.M. (1~12) | |
H | 時刻 (0~23) | |
m | 何時 | |
1分で2番目 | ||
S | ms | |
E | 何週目 | |
D | 一年の日 | |
F | その週は、その月の週です | |
w | 年間の週 | |
W | 1月の週 | |
a | A.M./P.M. タグ | |
k | 日中の時間 A.M./P.M. (0~11) | |
z | タイムゾーン | |
' | テキストのエスケープ | |
" | 一重引用符 | |
利用可能な作業方法の完全なリストについては、日付を指定すると、標準の Java ドキュメントを参照できます。 |