サーブレット日付処理
利用可能なコアJavaメソッドのほとんどで使用することができますサーブレットを使用しての最も重要な利点の一つ。 この章では、現在の日付と時刻をカプセル化するJavaのDateクラスによって提供されるjava.utilパッケージを説明します。
Dateクラスは、2つのコンストラクタをサポートしています。 最初のコンストラクタは、オブジェクトを現在の日付と時刻を初期化します。
Date( )
次のコンストラクタは、深夜に1970年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) 把调用对象的值与 date 的值进行比较。如果两个值是相等的,则返回 0。如果调用对象在 date 之前,则返回一个负值。如果调用对象在 date 之后,则返回一个正值。 |
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) 设置 time 指定的时间和日期,这表示从 1970 年 1 月 1 日午夜以来经过的时间(以毫秒为单位)。 |
10 | String toString( ) 转换调用的 Date 对象为一个字符串,并返回结果。 |
現在の日付と時刻を取得します
Javaサーブレットでの現在の日付と時間が非常に簡単です取得します。 次のように出力するように現在の日付と時刻を単一のDateオブジェクトのtoString()メソッドを使用します:
package com.w3big.test; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class CurrentDate */ @WebServlet("/CurrentDate") public class CurrentDate extends HttpServlet { private static final long serialVersionUID = 1L; public CurrentDate() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间"; Date date = new Date(); String docType = "<!DOCTYPE html> \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ファイルに適切なエントリを作成してみましょう:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>CurrentDate</servlet-name> <servlet-class>com.w3big.test.CurrentDate</servlet-class> </servlet> <servlet-mapping> <servlet-name>CurrentDate</servlet-name> <url-pattern>/TomcatTest/CurrentDate</url-pattern> </servlet-mapping> </web-app>
その後のhttpを訪問:8080 / TomcatTest / CURRENTDATEサーブレットを呼び出すために:// localhostと入力します。 これは、次のような結果が生成されます。
あなたが表示時間を見つけることができます数秒ごとに差をリフレッシュ、8080 / TomcatTest / CURRENTDATE:// localhostを:URLはhttpをリフレッシュしてみてください。
日付を比較
前述したように、あなたはサーブレットで使用可能なすべてのJavaメソッドを使用することができます。 あなたは二つの日付を比較する必要がある場合は、以下の方法があります:
- あなたは、2つのオブジェクト、(ミリ秒単位)1970年1月1日以降の深夜の経過時間、これらの2つの値を取得するにはgetTime()を使用することができます。
- あなたは()、後の()とequals()の前にメソッドを使用することができます。 12日以来18日まで、例えば、新しいDate(99、2、12).before(新しいDate(99、2、18))は、真の月を返します。
- あなたは日付リアライズにより、Comparableインタフェースで定義されるのcompareTo()メソッドを使用することができます。
日付をフォーマットするために使用してSimpleDateFormat
SimpleDateFormatは、日付のフォーマットと解析をロケールに依存する方法で、具象クラスです。 SimpleDateFormatは、任意のユーザー定義の日付と時刻のフォーマットパターンを選択することができます。
次のようにのは、上記の例を変更してみましょう:
package com.w3big.test; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class CurrentDate */ @WebServlet("/CurrentDate") public class CurrentDate extends HttpServlet { private static final long serialVersionUID = 1L; public CurrentDate() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间"; Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss E a "); String docType = "<!DOCTYPE html> \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を訪問:8080 / TomcatTest / CURRENTDATEサーブレットを呼び出すために:// localhostと入力します。 これは、次のような結果が生成されます。
シンプルな日付書式コードの形式
時刻の形式を指定するには、イベントモード文字列を使用します。 このモードでは、すべてのASCII文字がパターン文字として予約されており、次のように文字が定義されています。
文字 | 説明 | 例 |
---|---|---|
G | 時代インジケータ | AD |
Y | 4桁の年 | 2001 |
M | 一年のうちの〜の月 | または7月7日 |
D | 月の最初の数日間 | 10 |
時間 | AM / PM、時間(12から1)で | 12 |
H | その日の最初の数時間(0〜23) | 22 |
メートル | 第一画分の一時間 | 30 |
の | 最初の数秒でワンポイント | 55 |
S | ミリ秒 | 234 |
E | 週の週 | 火曜日 |
D | 今年の最初の数日間 | 360 |
F | 週週今月です | 2(7月第二水曜) |
ワット | 今年の最初の数週間 | 40 |
W | 1月の最初の数週間 | 1 |
A | AM / PMマーク | PM |
K | その日の最初の数時間(1〜24) | 24 |
K | AM / PMの時間を持つ(11から0) | 10 |
Z | 時間帯 | 東部標準時 |
' | テキストのエスケープ | デリミタ |
「 | 単一引用符 | ` |
表示するには、利用可能な処理日付メソッドの完全なリストについては、標準のJavaのマニュアルを参照してくださいすることができます。