JSTL Сравнение на дати

Виждал съм някои публикации за сравнения на дати в JSTL, но все още не мога да го накарам да работи.

Имам поле за дата, което искам да проверя дали е след 01-01-1970.

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

Може би трябва да се използва боб?

Благодаря !


person Nati    schedule 13.09.2012    source източник


Отговори (5)


Просто използвайте <fmt:formatDate>, за да извлечете годината от него, така че може да си направи сметката.

<fmt:formatDate value="${user.birthDate}" pattern="yyyy" var="userBirthYear" />
<c:if test="${userBirthYear le 1970}">
    <doSomeLogic/>
</c:if>
person BalusC    schedule 13.09.2012
comment
Сравняването на годината на дата е случай на ограничена употреба на Avery. Ако искате да сравните две дати до милисекунда, използвайте вградения Comparator of Date. Saurabh Ande отговори правилно по-долу. Това също не отговаря на проблема, изглежда, че OP се нуждае от него с точност поне до ден от месеца. - person Michael Peterson; 13.09.2018

Можете да използвате jstl и usebean нещо подобно

    <jsp:useBean id="now" class="java.util.Date"/>
    <c:if test="${someEvent.startDate lt now}"> 
    It's history!</c:if>
person Saurabh Ande    schedule 13.09.2012
comment
има ли bean за Unix Date(0)? (01.01.1970 г.) - person Nati; 13.09.2012

Можете също така да добавите булев гетер към вашия bean:

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

Така че можете да използвате следния EL:

<c:if test="${user.birthDateAfter1970}">
   You were born after the sixties.
</c:if>
person Jasper de Vries    schedule 13.09.2012

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

or lt,=,gt:

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

Ние използваме Long getTime() метода на java.util.Date.

person gavenkoa    schedule 16.12.2014

Можете да използвате (отхвърлените) методи getYear(), getMonth() и т.н.

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

Имайте предвид, че getYear() връща номера на годината - 1900.

person Dwight    schedule 18.02.2015