2

を使用して2つの日付を比較したいStruts2

One is returned from the backend  (test.currentDate) == "2012-11-15)"
The other one I just set "2014-10-19"

2 つの日付を比較するにはどうすればよいですか?

私のコードは次のとおりです。

<s:set name="currentDate"  value="%{test.currentDate}"/>
<s:set name="futureDate" value="2014-10-19"/>
<s:if test="%{#currentDate.before(#futureDate)}">
    <s:text name="test"/> <s:date name="test.currentDate" format="MM/yy"/> 
</s:if>
<s:else>
    <s:text name="test2"/>
</s:else>
4

2 に答える 2

4

上記では、文字列を問題の原因となっている日付オブジェクトと比較しようとしていました。ヘルパー クラスを作成して日付を比較し、OGNL 静的メソッド アクセスを利用することをお勧めします。OGNLBasics - 静的プロパティへのアクセス

    <s:set var="currentDate" value="%{new java.util.Date()}"/>
    <s:set var="futureDate" value="%{new java.util.Date()}"/>
    <s:property value="{#currentDate}"/>
    <s:property value="{#futureDate}"/>
    <s:if test="%{@com.mycompany.temp.strtus2.example.HelloWorld@compareDate(#currentDate, #futureDate)}">
        <div>Do your stuff</div>
    </s:if>
    <s:else>
        <div>else condition</div>
    </s:else>

ユーティリティ クラス

public static boolean compareDate(Date currentDate, Date futureDate) {
    boolean flag = false;
    if (removeTime(currentDate).equals(removeTime(futureDate))) {
        flag = true;
    } 
    return flag;
}

public static Date removeTime(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
}
于 2012-11-15T06:09:50.603 に答える
1

のタイムスタンプの長い値を取得しますfutureDate(例: 2014-10-19 == 1413706569870) 次に、JSP で

<s:if test="1413706569870l > test.currentDate.time">

また

<s:if test="test.currentDate.before(new java.util.Date(1413706569870l))">
于 2012-11-14T19:32:27.147 に答える