2012-01-26 169 views
4

日付があり、現在の時刻との相違を--year--month--days--hours--minutes--secondsと表示したい。このjstlをどうすればいいのですか?日付が現在の日時よりも大きくなることは確かです。jstlの日付差を取得

答えて

0

マークから取ら

${(dateObj) - (now.time)} 

これは、JSTLを使用可能であり、一つの方法は、@olly_ukが示唆したようにこれを処理する独自のカスタムタグを作成することです場合、私は不明です。私は個人的にはJSPで式言語を使用しません。これは可読性にも影響を及ぼし、ベストプラクティスにも影響します。

ページBeanが構築されたときに、この計算/日付の差があると、ELや新しいタグを避けることができます。これには、違いを確認したい日付が、結果を即座に表示したいフィールドにユーザによって入力されているかどうか不明な場合など、その限界があるかもしれません。

シナリオに応じて試してみると、jQueryを使用して相違を計算して表示することもできますが、とにかくこのページをリンクすると思います。

How do I get the number of days between two dates in JavaScript?

JQuery Calculate Day Difference in 2 date textboxes

この情報がお役に立てば幸いです。 JSTLを使用して

2

次のようないくつかのコードの体操を行うことができます:

<jsp:useBean id="now" class="java.util.Date" /> 
<fmt:parseNumber 
    value="${(now.time - otherDate.time)/(1000*60*60*24) }" 
    integerOnly="true" /> day(s) passed between given dates. 

しかし、コードが示唆するように、これは全体的な差を与えると、ほとんどそれを行うための「カレンダー意識」の方法であることができませんでした。私。あなたは言うことができませんでした: "OTHERDateから3年1ヶ月2日が経過しました"。

この「日合格...」スタイルのためのもう一つの例、「今日/昨日/バック日」プレゼンテーションJSPタグを使用して使用して:

<%--[...]--%> 
<%@attribute name="otherDate" required="true" type="java.util.Date"%> 

<jsp:useBean id="now" class="java.util.Date" scope="request"/> 
<fmt:parseNumber 
    value="${ now.time/(1000*60*60*24) }" 
    integerOnly="true" var="nowDays" scope="request"/> 

<fmt:parseNumber 
    value="${ otherDate.time/(1000*60*60*24) }" 
    integerOnly="true" var="otherDays" scope="page"/> 

<c:set value="${nowDays - otherDays}" var="dateDiff"/> 
<c:choose> 
    <c:when test="${dateDiff eq 0}">today</c:when> 
    <c:when test="${dateDiff eq 1}">yesterday</c:when> 
    <c:otherwise>${dateDiff} day(s) ago</c:otherwise> 
<%--[...]--%> 

注:

お使いのソフトウェアの問題ではカレンダーの方法で日と月を話すのが理にかなっている場合は、おそらくDomain Modelで表現されているはずです。そうでない場合は、少なくとも、この情報を提供するために、別のより低いソフトウェア層を使用することで利益を得るべきです(たとえば、java.util.CalendarまたはJoda-Time APIを使用して)。

関連する問題