2013-01-29 59 views
6

日付を比較しようとしていますが、基本的な例でこれを実行する最良の方法はありません。今日の日付をJSPで取得し、日付変数と比較してください

以下は、今日の日付/時間を取得し、それをIFステートメントで比較しています。私はハードコード化された書式が間違っていると確信していますが、書式を出力するときにはデフォルトの書式です。ですから、問題は、ある日付が他の日付よりも低いかどうか、そして日付のみをどのようにフォーマットするのですか。

<p> 
    <c:set var="testme" value="<%=new java.util.Date()%>"/> 
    <b><c:out value="${testme}"/></b> 
</p> 

<c:if test="${testme lt 'Tue Jan 29 16:02:58 GMT 2013'}"> 
    <p><b><span class="wrap">Test date is less.</span></b></p> 
</c:if> 

答えて

10

手始めに、スクリプトレットとタグライブラリ/ ELを混在させないでください。それはトラブルのレシピです。どちらか一方を使用し、両方を使用しないでください。あなたはタグライブラリ/ ELを進めて行きたいと仮定すると、ここにあなたがそれを行うことができ方法は次のとおりです。

<p> 
    <jsp:useBean id="today" class="java.util.Date" /> 
    <b><c:out value="${today}"/></b> 
</p> 

<fmt:setLocale value="en_US" /> 
<fmt:parseDate var="testdate" value="Tue Jan 29 16:02:58 GMT 2013" pattern="EEE MMM dd HH:mm:ss z yyyy" /> 
<c:if test="${today.time gt testdate.time}"> 
    <p><b><span class="wrap">Test date is less than now.</span></b></p> 
</c:if> 

注意私はまた、変数名や説明にいくつかの奇妙なコントラロジックを固定していること。

+0

こんにちは、scripletsとtaglibsについての素晴らしいアドバイス!文字通りそれをJSPにドロップすると、if文のテキストは表示されません。私はあなたがtestdate.timeを使っているのを見ます。このメソッドは日付のみを日付として書きますか? – user1479931

+0

'fmt' taglibをインポートするのを忘れたのかもしれません。 '.time'に関しては、' time'ゲッターを単に 'date.getTime()'のように通常のEL方法を呼び出します。これは比較のために有効な 'long'値を返します。 – BalusC

+0

ああ、こんにちは、いいえ、インポートはありません:(それは良い見ていると私はそれが良いことに時間に変換された事実が好きです。 – user1479931

0

JSTLの2つの日付を比較するためのコードです。最初

に-lessthan等しい

に等しい-greaterthan GE

-lessthan LT

-greaterthan

GTを用いて比較し、2つの日付の書式設定

<fmt:formatDate var="date_to_comare" value="${date_to_comare_value}" pattern="yyyy-MM-dd HH:mm:ss"/> 
<c:set var="today_date" value="<%=new java.util.Date()%>"/> 
<fmt:formatDate var="today_formated_date" value="${today}" pattern="yyyy-MM-dd HH:mm:ss"/> 
<c:if test="${date_to_comare lt today_formated_date}"> 
Write your code here 
</c:if> 
関連する問題