2012-09-13 18 views
9

Ho visto alcuni post relativi al confronto delle date in JSTL, ma non riesco ancora a farlo funzionare.JSTL Confronto date

Ho un campo data, che voglio verificare se è dopo 01-01-1970.

<c:if test="${user.BirthDate > whatGoesHere}"> 
    <doSomeLogic/> 
</c:if> 

}

Forse un fagiolo deve essere utilizzato?

Grazie!

risposta

16

Basta usare <fmt:formatDate> per estrarre l'anno da esso in modo da poter eseguire i calcoli su di esso.

<fmt:formatDate value="${user.birthDate}" pattern="yyyy" var="userBirthYear" /> 
<c:if test="${userBirthYear le 1970}"> 
    <doSomeLogic/> 
</c:if> 
4

U può utilizzare JSTL e useBean qualcosa di simile

<jsp:useBean id="now" class="java.util.Date"/> 
    <c:if test="${someEvent.startDate lt now}"> 
    It's history!</c:if> 
+0

c'è un fagiolo per Unix Data (0)? (01/01/1970) – Nati

5

Si potrebbe anche aggiungere un getter booleano a voi di fagioli:

public boolean isBirthDateAfter1970(){ 
    return birthDate.after(dateOf1970); 
} 

in modo da poter utilizzare il seguente EL:

<c:if test="${user.birthDateAfter1970}"> 
    You were born after the sixties. 
</c:if> 
2
<c:if test="${date1.time > date2.time}">...</c:if> 

o lt, =, gt:

<c:if test="${date1.time gt date2.time}">...</c:if> 

Abbiamo exploit Long getTime() metodo java.util.Date.

0

È possibile utilizzare i metodi (sconsigliato) getYear(), getMonth(), ecc

<c:if test="${user.BirthDate.year > 99}"> 
    <doSomeLogic/> 
</c:if> 

Nota che getYear() restituisce il numero dell'anno - 1900.