サーブレットの処理日


サーブレットを使用する最も重要な利点の 1 つは、コア Java で使用できるほとんどのメソッドを使用できることです。この章では、Java が提供する java.util パッケージの Date クラスについて説明します。このクラスは、現在の日付と時刻をカプセル化します。

Date クラスは 2 つのコンストラクターをサポートします。最初のコンストラクターは、現在の日付と時刻を使用してオブジェクトを初期化します。

Date( )

以下のコンストラクターは、1970 年 1 月 1 日の午前 0 時から経過したミリ秒数に等しいパラメーターを受け入れます。

Date(long millisec)

Date オブジェクトを利用できるようになったら、次のサポートされているメソッドのいずれかを呼び出して日付を操作できます:

シリアル番号メソッドと説明
1boolean after(Date) date)
呼び出された Date オブジェクトに含まれる日付が date で指定された日付より後の場合は true を返し、それ以外の場合は false を返します。
2boolean before(Date date)
呼び出された Date オブジェクトに含まれる日付が date で指定された日付より前の場合は true を返し、それ以外の場合は false を返します。
3Object clone( )
Date オブジェクトを繰り返し呼び出します。
4int CompareTo(Date date)
呼び出し元オブジェクトの値を date の値と比較します。 2 つの値が等しい場合は 0 が返されます。呼び出し元のオブジェクトが日付よりも前にある場合は、負の値が返されます。呼び出したオブジェクトが date より後に来る場合は、正の値が返されます。
5int CompareTo(Object obj)
obj が Date クラスの場合、操作は CompareTo(Date) と同等です。それ以外の場合は、ClassCastException がスローされます。
6booleanquals(Object date)
呼び出された Date オブジェクトに date で指定された時刻と日付が含まれている場合は true を返し、それ以外の場合は false を返します。
7long getTime( )
1970 年 1 月 1 日から経過したミリ秒数を返します。
8int hashCode( )
呼び出し元オブジェクトのハッシュ コードを返します。
9void setTime(long time)
時間を、1970 年 1 月 1 日の午前 0 時からの経過時間 (ミリ秒単位) を表す、指定された日時に設定します。
10String 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 文字がモード文字として予約されており、次のように定義されます。

4 桁の年2001Mその年の月7月または07dその月の日10h午前との時間/P.M. (1~12)12H 時刻 (0~23)22m 何時 301分で2番目55Sms234E何週目火曜日D 一年の日 360Fその週は、その月の週です2 (7月の第2水曜日)w 年間の週40W 1月の週1aA.M./P.M. タグPMk日中の時間 A.M./P.M. (0~11)10zタイムゾーン東部標準時'テキストのエスケープ区切り文字"一重引用符`
利用可能な作業方法の完全なリストについては、日付を指定すると、標準の Java ドキュメントを参照できます。