JSTL リファレンス

<fmt:parseDate>
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"

SYNOPSIS

<fmt:parseDate
value="文字列"
type="time|date|both"
dateStyle="defult|short|medium|long|full"
timeStyle="defult|short|medium|long|full"
pattern="解析パターン"
timeZone="タイムゾーン"
parseLocale="ロケール"
var="変数名"
scope="page|request|session|application"
>
value 属性省略時の解析対象文字列.
</fmt:parseDate>

説 明

文字列表記の日時を解析して java.util.Date オブジェクトを構築します。 解析対象の日時文字列は value 属性で指定するか、タグ内部の評価結果として渡すことができます。

解析対象の文字列は type, dateStyle, timeStyle 属性に従った パターンの日時か、これらに適合するパターンが期待できない場合は pattern 属性の カスタムパターンに一致する必要があります。 文字列の解析に失敗した場合は JspException が発生します。

現実の入力日時解析処理は、厳格な入力規則やエラーメッセージが決まっていたり、コンボボックスなどで 各日時フィールドがばらばらに送られるような設計を行うためサーブレットや Bean で行うことが多く、人間の 入力値に対してこのタグを使用することはほとんどありません。サーバ側でリンクなどに埋め込んだ日時文字列を 再びサーバ側で解析するような場合に使用します。

属 性

value="文字列"
optional

解析する日付文字列です。

この属性を省略した場合はタグ内部の文字列が使用されます。 どちらが見やすいかは好みの問題もありますが、条件分岐などを使用して解析対象の文字列を決定する 場合はタグ内部で行ったほうが便利です。

type="time|date|both"
optional

日時の解析タイプを指定します。date (日付), time (時刻) あるいは both (日時) のいずれかを指定できます。

dateStyle="defult|short|medium|long|full"
optional

既定のロケール依存日付解析のスタイルを指定します。 default, short, medium, long, full のいずれかを指定することができます。

このスタイルは type 属性に date, both を指定した場合にのみ有効です。 time が指定されている場合は無視されます。

timeStyle="defult|short|medium|long|full"
optional

既定のロケール依存時刻解析のスタイルを指定します。 default, short, medium, long, full のいずれかを指定することができます。

このスタイルは type 属性に time, both を指定した場合にのみ有効です。 date が指定されている場合は無視されます。

pattern="解析パターン"
optional

SimpleDateFormat 形式のカスタムパターンを使用します。

timeZone="タイムゾーン"
optional

解析した時刻のタイムゾーンを文字列または TimeZone オブジェクトで指定します。

この属性が省略された場合は設定変数 javax.servlet.jsp.jstl.fmt.timeZone を参照します (この設定変数には <fmt:setTimeZone> で設定できます)。

parseLocale="ロケール"
optional

解析のロケールを指定します。

var="変数名"
optional

解析結果の日付を格納する変数名。 この変数には java.util.Date オブジェクトが格納されます。

この属性を省略した場合はこの位置に解析結果の日時の Date.toString() が出力されます。

scope="page|request|session|application"
optional
var 属性で指定した変数のスコープ。 page, request, session, application のいずれかを指定します。

内 容

value 属性省略時の解析対象文字列。

使用例

日時解析においてロケール依存などの柔軟性を持たせようとするとバグの元になることが多いため、 通常はパターンで指定します。
JSP
<fmt:parseDate var="date" pattern="yyyy/MM/dd">
  2008/01/02
</fmt:parseDate>
<fmt:formatDate value="${date}" />
実行結果
2008/01/02
解析対象の文字列が想定したスタイルやパターンと一致しない場合は例外が throw されます。
JSP
<c:catch var="ex">
  <fmt:parseDate var="date" pattern="yyyy/MM/dd">
    Jan 2, 2008
  </fmt:parseDate>
</c:catch>
<c:out value="${ex}" />
実行結果
javax.servlet.jsp.JspException: In <parseDate>, value attribute
can not be parsed: "Jan 2, 2008" 
CVS 2008/03/09